【问题标题】:Dimension Mismatch in VGG KerasVGG Keras 中的尺寸不匹配
【发布时间】:2017-06-15 07:51:20
【问题描述】:

我想用 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'))

请告诉我为什么会出现这个错误。

【问题讨论】:

  • lstm_input 不太可能是您的 VGG 模型的一部分。你能给出更完整的代码和完整的错误日志吗?由于错误与您的输入形状有关:您如何输入数据?
  • 为了完整起见:开始使用 VGG 的最简单方法是从 Keras 应用程序中导入它:keras.io/applications/#vgg16

标签: python tensorflow keras deep-learning vgg-net


【解决方案1】:

你只需要像这样添加一个 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 层的一维形状。

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    相关资源
    最近更新 更多