2017-06-15 12 views
1

KerasでVGGモデルを作成します。VGG Kerasでの寸法の不一致

が、次のエラー、4次元を有すること

期待lstm_input_2を表示するが、形状(60000、10)を持つ配列を持っ

Iは、次のシーケンシャルモデルを作成しました。

model = Sequential() 
model.add(Conv2D(16, kernel_size=(3, 3), 
       padding='same', 
       input_shape=input_shape)) 
model.add(Activation('relu')) 
model.add(Conv2D(16, (3, 3), activation='relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Conv2D(32, (3, 3), padding='same', activation='relu')) 
model.add(Conv2D(32, (3, 3), activation='relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Conv2D(64, (3, 3), padding='same', activation='relu')) 
model.add(Conv2D(64, (3, 3), activation='relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dense(50, activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(num_classes)) 
model.add(Dropout(0.5)) 
model.add(Activation('softmax')) 

このエラーがなぜ発生したのか教えてください。

+2

'lstm_input'はあなたのVGGモデルの一部ではありません。より完全なコードと完全なエラーログを提供できますか?エラーはあなたの入力形状を参照しているので、どのようにデータを入力しますか? – petezurich

+0

そして完璧さのために:VGGで始める最も簡単な方法は、Kerasアプリケーションからインポートすることです:https://keras.io/applications/#vgg16 – petezurich

答えて

0

あなただけのようにように平坦化層を追加する必要があります。

… 
model.add(MaxPooling2D(pool_size=(2, 2))) 

model.add(Flatten()) # <-- this layer is missing in your code 

model.add(Dense(50, activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(num_classes)) 
model.add(Dropout(0.5)) 
model.add(Activation('softmax')) 
… 

これは、あなたの緻密層に供給することができますよりも、1次元形状にあなたの最後の2D層(MaxPooling2D)に変換します。

関連する問題