繁体   English   中英

TypeError:模型的输出张量必须是Keras张量

[英]TypeError: Output tensors to a Model must be Keras tensors

我想拍摄输入图像img (也有负值)并将其输入两个激活层。 但是,我想进行一个简单的转换,例如将整个图像乘以-1.0

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 side mul()方法可以用于这样的事情? 或者我可以以某种方式包装tf.mul(img, -1.0)的结果,以便我可以将其传递给Activation

请注意:负值可能很重要。 因此,将图像转换为最小值仅为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图层来包装你的功能吗?

请参阅此处的 doc

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM