使用 Keras 函数式 API 进行分类的神经网络:单热编码y_train;形状不兼容错误



我正在使用Keras的函数API来构建一个简单的顺序神经网络。这是X_train和y_train_encoded的形状(一个具有10个类的热编码y_train(。

X_train.shape
(60000, 28, 28)
y_train_encoded
(60000, 10)

我指定体系结构,编译它,并按如下方式训练它:

input = keras.layers.Input(shape=(28,28))
hidden1 = keras.layers.Dense(128, activation="relu")(input)
hidden2 = keras.layers.Dense(128, activation="relu")(hidden1)
hidden3 = keras.layers.Dense(28, activation="relu")(hidden2)
output = keras.layers.Dense(10, activation="softmax")(hidden3)
model = keras.models.Model(inputs=[input], outputs=[output])
model.compile(loss="categorical_crossentropy",
optimizer="adam",
metrics=["accuracy"])
history=model.fit(X_train, y_train_encoded, epochs=20, validation_split=0.2)

我得到下面的ValueError。

ValueError: Shapes (32, 10) and (32, 28, 10) are incompatible

我想知道你们能不能指出我哪里错了。我真的很感激任何帮助。

添加Flatten()层:

input = keras.layers.Input(shape=(28,28))
flatten = keras.layers.Flatten()(input)
hidden1 = keras.layers.Dense(128, activation="relu")(flatten)
hidden2 = keras.layers.Dense(128, activation="relu")(hidden1)
hidden3 = keras.layers.Dense(28, activation="relu")(hidden2)
output = keras.layers.Dense(10, activation="softmax")(hidden3)
model = keras.models.Model(inputs=[input], outputs=[output])

最新更新