Python 如何解释和转换Keras分类器预测的值?

Python 如何解释和转换Keras分类器预测的值?,python,tensorflow,machine-learning,keras,neural-network,Python,Tensorflow,Machine Learning,Keras,Neural Network,我正在训练我的Keras模型,以预测在提供数据参数的情况下,它是否会进行拍摄,并以0表示否,1表示是的方式表示。然而,当我试图预测它时,我得到的值是浮动的 我已经尝试使用与火车数据完全相同的数据来得到1,但它不起作用 我使用下面的数据尝试了一种热编码 我想得到 [[0,1] [1,0]] 然而,我越来越 [[0.8544417 0.14555828] [0.9312985 0.06870154]] 此外,有人能向我解释一下这个值0.8544417是什么意思吗?实际上,您可以将顶部带有

我正在训练我的Keras模型,以预测在提供数据参数的情况下,它是否会进行拍摄,并以0表示否,1表示是的方式表示。然而,当我试图预测它时,我得到的值是浮动的

我已经尝试使用与火车数据完全相同的数据来得到1,但它不起作用

我使用下面的数据尝试了一种热编码

我想得到

[[0,1]
[1,0]]
然而,我越来越

[[0.8544417  0.14555828]
 [0.9312985  0.06870154]]

此外,有人能向我解释一下这个值0.8544417是什么意思吗?

实际上,您可以将顶部带有softmax分类器的模型的输出解释为类的置信度得分或概率(因为softmax函数将值标准化,使其为正值,且总和为1)。因此,当您为模型提供一个真正的标签
[1,0]
时,这意味着该样本属于概率为1的类1,而属于概率为零的类2。因此,在训练期间,优化过程试图尽可能接近该标签,但它永远不会精确地达到[1,0](实际上由于softmax,它可能会接近[0.9999999,0.000001],但永远不会达到[1,0])

<>但是这不是问题,因为我们有兴趣得到足够接近并知道最高概率的类,并将其视为模型的预测。通过以最大概率查找类的索引,您可以轻松做到这一点:

import numpy as np

preds = model.predict(some_data)
class_preds = np.argmax(preds, axis=-1) # e.g. for [max,min] it gives 0, for [min,max] it gives 1
此外,如果出于任何原因,您有兴趣将预测转换为[0,1]或[1,0],则只需对值进行四舍五入即可:

import numpy as np

preds = model.predict(some_data)
round_preds = np.around(preds)   # this would convert [0.87, 0.13] to [1., 0.]
注意:四舍五入仅适用于两个类,当您有两个以上的类时不适用(例如,四舍五入后,[0.3,0.4,0.3]将变为[0,0,0])


注2:由于您是使用Keras的顺序API创建模型,因此作为上述
argmax
方法的替代方法,您可以直接使用
模型。预测类(一些数据)
将提供完全相同的输出。

如果答案解决了您的问题,请点击复选标记接受(✔) 在答案旁边,将您的问题标记为“已回答”-参见
import numpy as np

preds = model.predict(some_data)
round_preds = np.around(preds)   # this would convert [0.87, 0.13] to [1., 0.]