【问题标题】:Error when checking target: expected dense_2 to have shape (9,) but got array with shape (30,)检查目标时出错:预期 dense_2 的形状为 (9,) 但得到的数组的形状为 (30,)
【发布时间】:2020-01-11 12:27:49
【问题描述】:

尝试在 Keras 2.0.8、Python 3.6.1 和 Tensorflow 后端训练我的模型时遇到问题。

错误消息:检查目标时出错:预期 dense_2 的形状为 (9,),但得到的数组的形状为 (30,) 我也提供了输入的形状。

train_x.shape: (623, 30, 30, 1)
train_y.shape: (623, 30)
val_x.shape: (156, 30, 30, 1)
val_y.shape: (156, 30)


#building model
model = Sequential()
model.add(Conv2D(20, (5, 5), padding="same", input_shape=(30, 30, 1), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(50, (5, 5), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(9, activation="softmax"))

model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])


estop = EarlyStopping(patience=10, mode='min', min_delta=0.001, monitor='val_loss')

model.fit(train_x, train_y, validation_data=(val_x, val_y), batch_size=32, epochs=50, verbose=1, callbacks = [estop])

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    更改代码行:

    model.add(Dense(9, activation="softmax"))
    

    到下面一行:

    model.add(Dense(30, activation="softmax"))
    

    所以最后一个(Dense)层的输出维度是(None, 30),而不是维度(None, 9)

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 2021-03-15
      • 2020-03-19
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多