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) 

,我不知道我怎么能解决这个问题。是否有一个Kerasmul()的方法,我可以使用这样的事情?或者,我可以换的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) 
+0

是的,这工作!谢谢! – displayname

+0

不客气:) –