TypeError:模型的输出张量必须是Keras张量
问题描述:
我想输入图像img
(它也有负值)并将其输入到两个激活图层中。不过,我想作一个简单的变换例如与-1.0
乘以整个图像:TypeError:模型的输出张量必须是Keras张量
left = Activation('relu')(img)
right = Activation('relu')(tf.mul(img, -1.0))
如果我这样做,这样我得到:
TypeError: Output tensors to a Model must be Keras tensors. Found: Tensor("add_1:0", shape=(?, 5, 1, 3), dtype=float32)
,我不知道我怎么能解决这个问题。是否有一个Keras
侧mul()
的方法,我可以使用这样的事情?或者,我可以换的tf.mul(img, -1.0)
不知何故这样的结果,我可以将它传递给Activation
?
请注意:负值可能是重要的。因此转换图像s.t.最小的仅仅是0.0
是不是在这里解决。
我收到了
left = Activation('relu')(conv)
right = Activation('relu')(-conv)
同样的错误了同样的错误:
import tensorflow as tf
minus_one = tf.constant([-1.])
# ...
right = merge([conv, minus_one], mode='mul')
答
是否创建一个lambda层来包装你的函数工作?
见文件here
from keras.layers import Lambda
import tensorflow as tf
def mul_minus_one(x):
return tf.mul(x,-1.0)
def mul_minus_one_output_shape(input_shape):
return input_shape
myCustomLayer = Lambda(mul_minus_one, output_shape=mul_minus_one_output_shape)
right = myCustomLayer(img)
right = Activation('relu')(right)
是的,这工作!谢谢! – displayname
不客气:) –