我正在使用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])