我用Keras和Tensorflow做了一个模型。我将Inputlayer
与以下几行代码一起使用:
img1 = tf.placeholder(tf.float32, shape=(None, img_width, img_heigh, img_ch))
first_input = InputLayer(input_tensor=img1, input_shape=(img_width, img_heigh, img_ch))
first_dense = Conv2D(16, 3, 3, activation='relu', border_mode='same', name='1st_conv1')(first_input)
字符串
但我得到这个错误:
ValueError: Layer 1st_conv1 was called with an input that isn't a symbolic tensor. Received type: <class 'keras.engine.topology.InputLayer'>. Full input: [<keras.engine.topology.InputLayer object at 0x00000000112170F0>]. All inputs to the layer should be tensors.
型
当我像这样使用Input
时,它工作得很好:
first_input = Input(tensor=img1, shape=(224, 224, 3), name='1st_input')
first_dense = Conv2D(16, 3, 3, activation='relu', border_mode='same', name='1st_conv1')(first_input)
型Inputlayer
和Input
之间有什么区别?
5条答案
按热度按时间dbf7pr2w1#
InputLayer
是一个层。Input
是Tensor。你只能调用层传递Tensor给它们。
思路是:
字符串
因此,只能传递
Input
,因为它是Tensor。老实说,我不知道
InputLayer
存在的原因。可能是内部使用的。我从来没有用过它,似乎我永远也不需要它。izkcnapc2#
根据tensorflow网站,“通常建议通过Input使用功能层API,(这会创建一个InputLayer),而不直接使用InputLayer。”
czfnxgou3#
输入:用于创建功能模型
字符串
输入层:用于创建顺序模型
型
另一个区别是
在Keras Sequential模型中使用InputLayer时,可以通过将input_shape参数移动到InputLayer之后的第一个层来跳过它。
也就是说,在连续模型中,您可以跳过InputLayer,直接在第一层中指定形状。即从这个
型
到这个
型
6ojccjat4#
用简单的话来定义它:
keras.layers.Input
用于示例化KerasTensor。在这种情况下,你的数据可能不是一个tfTensor,可能是一个np
数组。另一方面,
keras.layers.InputLayer
是一个层,其中您的数据已经定义为tfTensor类型之一,即可以是不规则Tensor或常量或其他类型。希望这对你有帮助!
bn31dyow5#
只是补充已经说过的内容,我测试了它们,它们似乎并不等同(类似的布局不会产生完全相同的结果)。因此,按照建议使用input_shape可能会更好。
的数据
的