Keras 中二进制分类的输出层

Output layer for Binary Classification in Keras

我需要将图像分类为癌性或非癌性。

为此,我构建了一个经典的 CNN,但我在用像这样的双列向量标记我的数据集之间犹豫不决:

cancerous: [0, 1]
not cancerous: [1, 0]

并使用具有 2 个输出神经元的 softmax 激活函数。

model.add(Dense(2, activation='softmax'))

cancerous: [1]
not cancerous: [0]

并使用带有一个输出神经元的 sigmoid 激活函数。

model.add(Dense(1, activation='sigmoid'))

考虑到我需要使用患癌症的概率作为患者的最终指标并绘制 ROC 曲线,哪个模型更好?

一般的趋势是使用多输出节点和sigmoid曲线进行多标签class化。通常,softmax 用于 multiclass classification,其中 softmax 预测每个输出的概率,我们选择概率最高的 class。对于二进制classification,我们可以选择通过sigmoid传递的单个神经元输出,然后设置一个阈值来选择class,或者使用两个神经元输出然后执行softmax。在任何一种情况下,阈值是 possible.It 都非常容易绘制具有单个神经元输出的 ROC 曲线,因为您必须对一个值设置阈值。因此,您可以轻松地使用 model.add(Dense(1, activation='sigmoid'))