2016-12-27 8 views
1

動作しません: https://blog.keras.io/building-autoencoders-in-keras.htmlKeras畳み込みオートエンコーダは、私はちょうどここKerasの著者からの畳み込みオートエンコーダをテストしてい

しかし、私はこの問題があります:私は正確な、私はすでにsetted

Exception: Error when checking model target: expected convolution2d_7 to have shape (None, 8, 32, 1) but got array with shape (60000, 1, 28, 28) 

を最後のconvレイヤーの 'border_mode =' same 'フィールド。 だから私は本当にそれがどこから来たのか分からない... ここでは概要です:

Layer (type)      Output Shape   Param #   Connected to      
     ==================================================================================================== 
input_1 (InputLayer)    (None, 1, 28, 28)  0            
____________________________________________________________________________________________________ 
convolution2d_1 (Convolution2D) (None, 1, 28, 16)  4048  input_1[0][0]      
____________________________________________________________________________________________________ 
maxpooling2d_1 (MaxPooling2D) (None, 1, 14, 16)  0   convolution2d_1[0][0]    
     ______________________________________________________________________________ ______________________ 
convolution2d_2 (Convolution2D) (None, 1, 14, 8)  1160  maxpooling2d_1[0][0]    
____________________________________________________________________________________________________ 
maxpooling2d_2 (MaxPooling2D) (None, 1, 7, 8)  0   convolution2d_2[0][0]    
____________________________________________________________________________________________________ 
convolution2d_3 (Convolution2D) (None, 1, 7, 8)  584   maxpooling2d_2[0][0]    
____________________________________________________________________________________________________ 
maxpooling2d_3 (MaxPooling2D) (None, 1, 4, 8)  0   convolution2d_3[0][0]    
____________________________________________________________________________________________________ 
convolution2d_4 (Convolution2D) (None, 1, 4, 8)  584   maxpooling2d_3[0][0]    
____________________________________________________________________________________________________ 
upsampling2d_1 (UpSampling2D) (None, 2, 8, 8)  0   convolution2d_4[0][0]    
____________________________________________________________________________________________________ 
convolution2d_5 (Convolution2D) (None, 2, 8, 8)  584   upsampling2d_1[0][0]    
____________________________________________________________________________________________________ 
upsampling2d_2 (UpSampling2D) (None, 4, 16, 8)  0   convolution2d_5[0][0]    
____________________________________________________________________________________________________ 
convolution2d_6 (Convolution2D) (None, 4, 16, 16)  1168  upsampling2d_2[0][0]    
____________________________________________________________________________________________________ 
upsampling2d_3 (UpSampling2D) (None, 8, 32, 16)  0   convolution2d_6[0][0]    
______________________________________________________________________________ ______________________ 

convolution2d_7 (Convolution2D) (None, 8, 32, 1)  145    

upsampling2d_3[0][0]    
==================================================================================================== 
Total params: 8273 
____________________________________________________________________________________________________ 
+0

この質問は重複している可能性があります:http://stackoverflow.com/questions/39848466/tensorflow-keras-convolution2d-valueerror-filter-must-not-be-larger-than-t?noredirect=1#comment67013494_39848466 –

+0

こんにちは、 私はこのスレッドを見ましたが、実際には、dim_orderingをtheano dimに変更する必要があります。 (1,2,8,28)、get(1,32,32) これは最後のアップサンプリングレイヤーのためであると私は理解していますが、 3x3サイズのフィルタを使用した最後のコンバージョンはそれを整理する必要がありますか? –

答えて

3

は最後に答えを見つけました。 チュートリアルの作成者は、28x28ではなく32x32のMNISTイメージでテストしたと思います。

最後のコンバレイヤーborder_mode = 'same'に追加すると、出力形状が(32,32,1) になるので、良い出力(28,28,1)を得るには最後のconvレイヤーの前にborder_mode = 'valid'を追加します。

要約: ディメンションの順序を1x28x28の代わりに28x28x1に修正します。 次に、最後のconvレイヤーと同じ境界モードを追加します。 最後に、最後のconvレイヤーに有効な境界モードを追加します。

希望すると、これが役立ちます。

関連する問題