1 回答
TA贡献1816条经验 获得超4个赞
我只是复制了代码,一切正常。我希望您没有从规范化的 train_images 加载测试图像,因为其中的图像已经规范化并且您在预测之前再次对其进行规范化。以下工作对我来说是预期的:
image = train_images[14]
image = image.astype('float32')
image = image.reshape(-1,28, 28,1)
image/=255
pred_array = model.predict(image)
print(pred_array)
pred_array = np.argmax(pred_array)
print('Result: {0}'.format(pred_array))
编辑: 我在复制您的代码时做了一些不同的事情。我将标准化图像保存在不同的 Numpy 数组中,如下所示:
train_images_norm = train_images.astype('float32')
test_images_norm = test_images.astype('float32')
train_images_norm /= 255
test_images_norm /= 255
...
model.fit(train_images_norm, train_labels_norm,...)
所以现在,当我预测时,我使用原始图像(未标准化)并在预测之前对其进行标准化。您得到不可预测结果的原因是您将已经规范化的图像再次除以 255,这会创建完全不同的数字,网络未使用这些数字进行训练。您有两种选择,要么将原始图像保存在不同的数组中并在预测之前对其进行归一化(我的代码),要么如果您希望原始代码起作用,您可以在预测之前删除image = image.astype('float32')和image /= 255。
添加回答
举报