1

我想用 Keras 创建 VGG 模型。但是,显示以下错误:

预期 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'))

请告诉我为什么会产生这个错误。

4

1 回答 1

0

你只需要像这样添加一个 Flatten 层:

…
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) 转换为您可以输入 Dense 图层的一维形状。

于 2017-06-15T09:56:14.233 回答