使用Tensorflow的keras时出现ValueError

问题描述 投票:0回答:1

我是机器学习的新手,正在尝试使用keras的简单程序。当我运行以下代码时,出现错误消息“ ValueError:图层顺序的输入0与图层不兼容:输入形状的预期轴-1的值为784,但接收到形状为[32、28、28]的输入” 。有人可以帮我吗?我正在尝试跟随此视频:https://www.youtube.com/watch?v=tjsHSIG8I08,但似乎不起作用。预先感谢!

import tensorflow as tf
import numpy as np

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(512, activation=tf.nn.relu, input_shape=(784,)))
model.add(tf.keras.layers.Dense(256, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))

model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

model.fit(train_images, train_labels, epochs=5)

loss, accuracy = model.evaluate(test_images, test_labels)
print('Accuracy', accuracy)

scores = model.predict(test_images[0:1])
print(np.argmax(scores))
tensorflow keras tensorflow2.0 valueerror
1个回答
0
投票
model.add(tf.keras.layers.Dense(512, activation=tf.nn.relu, input_shape=(784,)))

这里您将输入形状指定为784尺寸为28 * 28的图像,但是当归结为将图像传递给模型时,您将其传递为28x28。您需要做的是在调用此行之前使用flatten()功能展平图像:

model.fit(train_images, train_labels, epochs=5)

并且在您致电这些行之前:

loss, accuracy = model.evaluate(test_images, test_labels)

scores = model.predict(test_images[0:1])

如果您有一个CNN,那么您希望不将其展平而通过它们,因为当展平它们时会丢失结构信息。

© www.soinside.com 2019 - 2024. All rights reserved.