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()
fromImageDatagenerator
,您可以在其中提供类标签或类列表。在我的例子中,数据帧中有两个字符串“真”或“假”
还有没有一种方法可以设置我想要哪个类的概率
这是成为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是的,它很有帮助。感谢您解释乙状结肠功能。