如何在Keras中设置适当的模型输入形状

时间:2020-07-31 04:20:20

标签: python tensorflow keras conv-neural-network loss-function

我是Keras的新手。我在Keras周围玩耍以获得一些直觉,并坚持在这里。

input_image = tf.keras.Input(shape=(16,16,3))
x = tf.keras.layers.Conv2D(32,(3,3), padding = 'same')(input_image)
model = tf.keras.Model(input_image , x)

model.compile(optimizer='Adam',loss = 'MSE')

inputs = np.random.normal(size = (16,16,3))
outputs = np.random.normal(size = (16,16,32))
model.fit(x = inputs , y =outputs)

我只是想看看模型的输出形状。摘要说(无,16,16,32)。但是现在我有两个问题。一个是输出形状,另一个是为什么我的代码不起作用。我希望有人告诉我我所缺少的。谢谢〜

1 个答案:

答案 0 :(得分:2)

inputs = np.random.normal(size = (1,16,16,3)) #<---- here
outputs = np.random.normal(size = (1,16,16,32)) #<---here

形状应为4D而非3D。您还需要提供批处理的详细信息。

(batch_size, w,h,c) <---- 4D

您缺少batch_size

32,(3,3)来自tf.keras.layers.Conv2D(32,(3,3), padding = 'same')(input_image)

您有32个过滤器。因此通道深度将为32。但是由于您使用padding ='same',所以您的输出将具有与输入相同的尺寸。只是深度不同。