Keras 中二元分类的输出层

Boe*_*nce 6 python classification layer neural-network keras

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

为此,我构建了一个经典的 CNN,但我在使用两列向量标记我的数据集之间犹豫不决,如下所示:

cancerous: [0, 1]
not cancerous: [1, 0]
Run Code Online (Sandbox Code Playgroud)

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

model.add(Dense(2, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)

或者

cancerous: [1]
not cancerous: [0]
Run Code Online (Sandbox Code Playgroud)

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

model.add(Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*'Sa 4

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