如何解释tf.keras.Model.predict()输出?

时间:2020-09-18 14:50:53

标签: python-3.x tensorflow keras computer-vision

我在寻找所需的文档时遇到了麻烦。总结这个问题,我已经使用两类标记为“ 0”或“ 1”的图像训练了tf.keras模型。我现在想使用此模型来预测新图像是“ 0”还是“ 1”。我的问题如下:model.predict()返回一个介于1和0之间的数字,但是我似乎找不到确切的含义。说这是它的预测是否正确(即接近1表示图像可能为1,接近0表示图像可能为0)?还是这里还有其他事情发生。我在下面包含了代码和一些输出。在这种情况下,pred是图像为1的概率,1 - pred是图像为0的概率吗?

感谢所有帮助。

for img_path in test_filenames:
   img = tf.keras.preprocessing.image.load_img(img_path, target_size=(IMAGE_SIZE,IMAGE_SIZE))
   img_array = tf.keras.preprocessing.image.img_to_array(img)
   img_array = tf.expand_dims(img_array, 0)
   pred = model.predict(img_array)
   print(pred)

返回

[[0.8361757]]
[[0.26765466]]
[[0.2722953]]
[[0.81938094]]
[[0.24995388]]
[[0.45974937]]

1 个答案:

答案 0 :(得分:0)

pred是图像为1的概率,1 - pred是图像为0的概率吗?

是的,这是正确的。如果您想获得硬类(即0或1),则可以对输出进行阈值设置。 0.5是常见的阈值,但我也看到过0.3。您可以对此进行调整。

pred = model.predict(img_array)
classes = pred > 0.5

由于模型的最后一次激活是sigmoid function,因此预测最有可能在0到1之间。