ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 of input shape
使用深度学习Keras的Sequential框架搭建神经网路模型,关于数据维度报错问题
ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 of input shape to have value 784 but received input with shape (None, 28)
预测图片类型时报错,主要原因是预测数据的维度与输入层的维度不一致,报错代码处,预测测试集中第一个数据
print(np.argmax(model.predict(test_images_scale[0])))
原因分析
从报错语句中可以看出,错误在于第0层全连接层输入与该层不兼容。也就是数据维度的错误,测试集作为验证模型和评估模型均没有问题,说明测试集的维度作为输入没有问题,下面我们输出测试集数据维度及预测数据的维度
print('test.shape:'+str(test_images_scale.shape))
print('test[0].shape:'+str(test_images_scale[0].shape))
输出结果
test.shape:(10000, 28, 28)
test[0].shape:(28, 28)
从结果中可以看出,预测测试集中某个数据这样的维度有误,可接受3维数据,但是输入的1维数据,修改如下
tf.reshape(test_images_scale[0],(1,28,28))
这样既可正确预测。