Tensorflow Keras MNIST 获取预测概率

Tensorflow Keras MNIST get probabilities of prediction

我已经训练了我的模型,它运行良好。然后我继续预测单张图像(jpg)。这也有效,但我现在没有得到确切的概率。

这是我的模型:

def train():
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
#nomalize data
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
#train model
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=3)

model.save('Mnist')
print("Done with training :)")

这就是我预测单张图片的方式:

def predict(testImg):
    import numpy as np
    model = load_model('Mnist')
    img = testImg.convert('L').resize((28,28), Image.ANTIALIAS)
    img = np.array(img)
    predictions = model.predict(img[None,:,:])

我怀疑它与 img[None,:,:] 重塑有关,因为预测函数正在返回我的测试集的概率。

现在我只是返回一个像 [0,0,0,0,0,1,0,0,0] 这样的数组,而不是实际的概率。

事实证明,在我预测要对数组进行归一化之前,我遗漏了这些行。

        img = img.astype('float32')
        img /= 255

这里也有描述: