【问题标题】:ValueError: Error when checking target: expected dense_35 to have 4 dimensions, but got array with shape (1157, 1)ValueError:检查目标时出错:预期的 dense_35 有 4 个维度,但得到了形状为 (1157, 1) 的数组
【发布时间】:2019-08-27 17:56:36
【问题描述】:

我有训练和测试图像数据,其形状如下所示。

X_test.shape , y_test.shape , X_train.shape , y_train.shape
    ((277, 128, 128, 3), (277, 1), (1157, 128, 128, 3), (1157, 1))

我正在训练一个模型

def baseline_model():
    filters = 100
    model = Sequential()
    model.add(Conv2D(filters, (3, 3), input_shape=(128, 128, 3), padding='same', activation='relu'))
    #model.add(Dropout(0.2))
    model.add(BatchNormalization())
    model.add(Conv2D(filters, (3, 3), activation='relu', padding='same'))
    model.add(BatchNormalization())

    model.add(MaxPooling2D(pool_size=(2, 2)))
    #model.add(Flatten())

    model.add(Conv2D(filters, (3, 3), activation='relu', padding='same'))
    model.add(BatchNormalization())
    model.add(Conv2D(filters, (3, 3), activation='relu', padding='same'))
    model.add(Activation('linear'))
    model.add(BatchNormalization())

    model.add(Dense(512, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))
    # Compile model
    lrate = 0.01
    epochs = 10
    decay = lrate/epochs
    sgd = SGD(lr=lrate, momentum=0.9, decay=decay, nesterov=False)
    model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

    print(model.summary())
    return model

但我收到以下错误提示

检查目标时出错:预期 dense_35 有 4 个维度, 但得到了形状为 (1157, 1) 的数组

请告诉我我犯了什么错误以及如何解决这个问题。我附上了模型摘要的快照

【问题讨论】:

    标签: python keras conv-neural-network tf.keras


    【解决方案1】:

    您可能忘记做的一件事是在第一个 Dense 层之前添加一个 Flatten 层:

    model.add(BatchNormalization())
    
    model.add(Flatten()) # flatten the output of previous layer before feeding it to Dense layer
    model.add(Dense(512, activation='relu'))
    

    您需要它,因为Dense 层不会展平其输入;而是it is applied on the last dimension

    【讨论】:

    • 我的错......非常感谢您发现愚蠢的错误。
    【解决方案2】:

    虽然dense_35需要馈送4维数据,但根据误差,网络馈送的是2维数据,即标签向量。

    【讨论】:

      猜你喜欢
      • 2019-03-02
      • 1970-01-01
      • 2018-04-13
      • 2020-08-23
      • 1970-01-01
      • 2022-01-15
      • 2019-11-13
      • 2020-02-07
      • 2019-09-11
      相关资源
      最近更新 更多