2016-10-19 65 views
2

对于以下CNNKeras得到错误的输出形状

model = Sequential() 
model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 256, 256))) 
# now model.output_shape == (None, 64, 256, 256) 

# add a 3x3 convolution on top, with 32 output filters: 
model.add(Convolution2D(32, 3, 3, border_mode='same')) 
# now model.output_shape == (None, 32, 256, 256) 
print(model.summary()) 

但是模型总结出下面的输出

____________________________________________________________________________________________________ 
Layer (type)      Output Shape   Param #  Connected to      
==================================================================================================== 
convolution2d_44 (Convolution2D) (None, 3, 256, 64) 147520  convolution2d_input_24[0][0]  
____________________________________________________________________________________________________ 
convolution2d_45 (Convolution2D) (None, 3, 256, 32) 18464  convolution2d_44[0][0]   
==================================================================================================== 
Total params: 165984 

为什么会收到给定输出形状?

回答

5

这是由设置input_shape引起的问题。在您当前的设置中,您想要输入3个通道的256x256。然而,凯拉斯认为你正在给256通道的3x256图像。有几种方法可以纠正它。

  • 选项1:更改顺序input_shape

  • 选项2:指定在层image_dim_ordering

  • 选项3:通过改变 'TF' 到 '日' 修改keras配置文件在〜/ .keras/keras.json

+0

感谢。这真的很有帮助。 –

+0

在〜/ .keras/keras.json,变 “image_dim_ordering”: “TF” 到 “image_dim_ordering”: “TH” – Yakku

相关问题