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。
添加回答
舉報