Tensorflow Keras:检查目标时出错:预期稠密_1具有形状(10),但获得具有形状(1,)-MNIST的数组

Tensorflow Keras:检查目标时出错:预期稠密_1具有形状(10),但获得具有形状(1,)-MNIST的数组,tensorflow,keras,mnist,Tensorflow,Keras,Mnist,我试图对mnist的手写数字进行分类,但我一直从keras那里得到同样的错误 import tensorflow as tf import numpy as np import tensorflow.keras as keras from tensorflow.keras.datasets import mnist model = keras.Sequential() model.add(keras.layers.Dense(15, input_shape=(784,), activatio

我试图对mnist的手写数字进行分类,但我一直从keras那里得到同样的错误

import tensorflow as tf
import numpy as np
import tensorflow.keras as keras
from tensorflow.keras.datasets import mnist

model = keras.Sequential()

model.add(keras.layers.Dense(15, input_shape=(784,), activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))

(data, label), (val_data, val_label) = mnist.load_data()


data = data.reshape(data.shape[0],data.shape[1]*data.shape[2])
val_data = val_data.reshape(val_data.shape[0],val_data.shape[1]*val_data.shape[2])

model.compile(optimizer=tf.train.GradientDescentOptimizer(0.01),
              loss='mse',
              metrics=['acc'])

model.fit(data,label,batch_size=30,epochs=10,validation_data=(val_data,val_label))

softmax层需要一个大小为(无,10)的张量。因此,您必须使用一个热编码器对标签数据进行编码。可通过以下方式完成:

label = keras.utils.to_categorical(label, num_classes = 10)
val_label = keras.utils.to_categorical(val_label, num_classes = 10)

如果您不熟悉一种热编码,可以在此处参考:

softmax层需要一个大小的张量(无,10)。因此,您必须使用一个热编码器对标签数据进行编码。可通过以下方式完成:

label = keras.utils.to_categorical(label, num_classes = 10)
val_label = keras.utils.to_categorical(val_label, num_classes = 10)

如果您不熟悉某个热编码,可以在此处引用它:

我不确定,但我认为这是因为您指定了
loss='mse'
。看起来您正在尝试对mnist数据进行分类。您能否尝试将损失更改为
loss='classifical\u crossentropy'
?我不确定,但我认为这是因为您指定了
loss='mse'
。看起来您正在尝试对mnist数据进行分类。你能试着把损失改成
loss='classifical\u crossentropy'