Keras:检查目标时发生错误:预期density_1的形状为(10,),但数组的形状为(1,)-MNIST

时间:2018-07-21 20:41:34

标签: 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,), 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))

1 个答案:

答案 0 :(得分:0)

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

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

如果您不熟悉一种热编码,可以在这里引用:One hot encoding in python