层的输入不是符号张量。收到的类型:<class'keras.layers.convolutional.Conv2D'>

时间:2020-05-14 15:24:23

标签: python tensorflow keras

我正在尝试按照blog建立自己的模型,以使其适应2输入2输出模型。
但是,当我尝试使用Keras Functional API(使用tensorflow后端)构建模型

inputV = Conv2D(32,(3,3),padding="same",input_shape = (96,96,3),name='Input of Visible Task')
inputH = Conv2D(32,(3,3),padding="same",input_shape = (96,96,3),name='Input of Hidden Task')

hiddenLayer = Activation("relu")
outputV = hiddenLayer(inputV)
outputH = hiddenLayer(inputH)

错误提示为

Layer activation_1 was called with an input that isn't a symbolic tensor. Received type: <class 'keras.layers.convolutional.Conv2D'>. Full input: [<keras.layers.convolutional.Conv2D object at 0x000001CF1211D6D8>]. All inputs to the layer should be tensors.

但是当我尝试

inputV = Conv2D(32,(3,3),padding="same",input_shape = (96,96,3)
                activation='relu',name='Input of Visible Task')

一切都很好。
为什么当我尝试分别激活时,它不起作用?

1 个答案:

答案 0 :(得分:0)

Keras功能API通过链接输入流来工作,例如:

inp = Input(shape=(...))
x = Conv2D(...)(inp)
x = Activation(...)(x)
x = Conv2D(...)(x)
mymodel = Model(inp, x)

这显然不会运行,但是您能看到我如何将x变量从输出链接到下一层的输入吗?在构建模型时,Keras将跟踪此流程。

现在,您的代码中存在几个问题。 1.使用功能性API,您的模型应从tf.keras.Input()开始! 2.您缺少数据链。 3.您缺少模型构建部分(mymodel部分)