2016-10-19 60 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

相關問題