尝试在Keras 2.0.8,Python 3.6.1和Tensorflow后端中训练模型时遇到问题。
错误消息:检查目标时出错:预期density_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])
答案 0 :(得分:1)
更改代码行:
model.add(Dense(9, activation="softmax"))
到下一行:
model.add(Dense(30, activation="softmax"))
使最后(Dense
)层的输出尺寸为(None, 30)
,而不是尺寸(None, 9)
。