Keras图像二值分类,哪个类别的概率为0和1?使用函数式API

Keras图像二值分类,哪个类别的概率为0和1?使用函数式API,keras,deep-learning,Keras,Deep Learning,在实现二进制分类时,大多数人使用sigmoid函数作为最后一层的激活。据我所知,sigmoid函数给出了介于0和1之间的概率,我们设置了一个阈值(主要是0.5)来确定类别标签 然而,我很困惑,那个概率是多少?假设我有两个类A和B,我得到了预测结果p或p%。是成为A类的概率还是不是A类的概率(即B) 如果以前有人问过这个问题,我很抱歉,但我找不到。因为我使用的是Keras函数API,所以我不能使用predict\u classes()函数。另外,我主要使用生成器来加载我的数据集,主要是flow\u

在实现二进制分类时,大多数人使用
sigmoid
函数作为最后一层的激活。据我所知,
sigmoid
函数给出了介于0和1之间的概率,我们设置了一个阈值(主要是0.5)来确定类别标签

然而,我很困惑,那个概率是多少?假设我有两个类
A
B
,我得到了预测结果
p
p%
。是成为
A类
的概率还是不是
A类
的概率(即
B

如果以前有人问过这个问题,我很抱歉,但我找不到。因为我使用的是
Keras函数API
,所以我不能使用
predict\u classes()
函数。另外,我主要使用生成器来加载我的数据集,主要是
flow\u from\u dataframe()
from
ImageDatagenerator
,您可以在其中提供类标签或类列表。在我的例子中,数据帧中有两个字符串“真”或“假”

还有没有一种方法可以设置我想要哪个类的概率

这是成为A级的概率还是不是 属于A类(即B类)

不是真的。比如说,sigmoid的输出为0.8,所以这并不意味着每个类的网络输出概率,因为sigmoid的输出总和不等于1。换句话说,输出为0.8并不表示该输出有可能属于概率为0.2的其他类别

此外,在二元分类中,使用S形网络输出p(y=1)。然后根据概率的定义p(y=0)=1-p(y=1)。对于简单的二元分类,它们加起来只有一个

如果您想查看每个类别的概率,应使用
softmax
激活,因为其输出总和为1。您可以将
softmax
输出解释为概率

另一方面,这些模型不是概率的,而是确定性的。因此,将
softmax
的输出解释为概率是常见的,但它们之间没有数学联系

还有没有一种方法可以设置我想要哪个类的概率

您可以设置各种阈值,即大多数为0.5,但这取决于您的数据和问题。您可以更改阈值以了解其如何影响AUC-ROC,通过解释更改,您可以得出最适合您的阈值

如果要确定类别,可以使用,请注意,0.5是阈值,您可以更改它:

predicted_classes = [1 * (x[0]>=0.5) for x in preds_sigmoid]

这里,如果输出大于0.5,则它属于第二类。

除非明确提及,否则图像生成器将按字母顺序遍历所有文件夹。所以在你的情况下,假的概率在0到0.5之间。@clinsin我的回答没有帮助?@Frightera是的,它很有帮助。感谢您解释乙状结肠功能。