2017-06-15 173 views
1

我想用Keras創建VGG模型。VGG Keras中的尺寸不匹配

但顯示以下錯誤,

預期lstm_input_2有4個維度,但得到了陣列狀(60000,10)

我創建了下面的順序模型。

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')) 
… 

這將您的最後一個2D層(MaxPooling2D)到一維形狀,你可以比送入您的緻密層。