Clé*_*oud 0 python classification deep-learning
在我遇到的大多数涉及二元分类的文章中,我倾向于看到两种主要类型的输出:
Dense(2, activation = "softmax")
Run Code Online (Sandbox Code Playgroud)
或者
Dense(1, activation = "sigmoid")
Run Code Online (Sandbox Code Playgroud)
Dense(2, activation = "softmax")拥有或Dense(1, activation = "sigmoid")作为二元分类的输出层有什么区别?
具体来说:
首先,性能上有区别吗?
最后,经过培训,使用上有什么区别吗?
小智 5
正如您在这个问题中所描述的那样,两者本质上没有区别。然而,"softmax"也可以应用于多类分类,而"sigmoid"仅适用于二元分类。
"sigmoid"预测 0 到 1 之间的值。以图形方式表示如下:

Softmax 为每个输出节点预测一个介于 0 和 1 之间的值,所有输出均进行归一化,以便它们的总和为 1。例如,对于 3 类分类,您可以获得输出 0.1、0.5、0.4。这里第二类是预测,因为它具有最大的值。对于二元分类,两个节点的输出之和必须为 1。每个节点输出的值是它预测该类别的置信度。例如,如果输出为 0.1, 0.9,则类别 0 的预测概率为 0.1(即可能性不大),类别 1 的预测概率为 0.9,因此您可以非常确定它是类别 1。
这两种方法之间的唯一区别在于如何使用神经网络的输出。您的"sigmoid"输出将是每个示例的单个值。例如,[0.1, 0.6, 0.8]对于三个不同的示例,示例 1 被预测为类别 0,示例 2 被预测为类别 1(但不是很确定),示例 3 被预测为类别 1(具有更高的确定性)。
对于"softmax"每个示例,您将预测两个值,即该示例的类 0 和类 1 的可能性,例如[[0.2, 0.8], [0.6, 0.4]],这意味着示例 1 被预测为类 1,可能性为 0.8,示例 2 被预测为类 0,可能性为 0.6。