使用 keras 我必须训练一个模型来预测图像属于 0 类还是 1 类。我对二元和 categorical_cross_entropy 感到困惑。我已经搜索过了,但我仍然感到困惑。有人提到我们只在尝试预测多类时使用分类交叉熵,我们应该为此使用单热编码器向量。所以这意味着当我们要使用 binary_cross_entrpoy 进行训练时,我们不需要任何单热编码的向量标签。有人建议将 one_hot 向量表示为 [0. 1.](如果类是 1)或 [1. 0.](如果类为 0)对于 binary_cross_entropy。我正在使用一个带有分类交叉熵的热编码器 [0 1] 或 [1 0]。我的最后一层是model.add(Dense(num_classes, activation='softmax')) # Compile model model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
1 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
对于2 个类,它们在数学上相同,因此是二进制的。换句话说,2 类分类交叉熵与单输出二元交叉熵相同。举一个更具体的例子,这些是相同的:
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', ...)
# is the same as
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', ...)
使用哪一种?为了避免单热编码分类输出,如果您只有 2 个类,从编码的角度来看,使用二进制交叉熵更容易。二进制情况可能在计算上更有效,具体取决于实现。
添加回答
举报
0/150
提交
取消