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
这里也有描述:
我已经训练了我的模型,它运行良好。然后我继续预测单张图像(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
这里也有描述: