范畴交叉熵与二进制交叉熵的区别

2024-09-30 02:33:39 发布

您现在位置:Python中文网/ 问答频道 /正文

使用keras,我必须训练一个模型来预测图像属于0类还是1类。我对二元熵和范畴熵感到困惑。我已经找过了,但是我还是很困惑。有人提到,当我们试图预测多个类时,我们只使用范畴交叉熵,我们应该为此使用一个热编码器向量。所以这意味着我们不需要任何一个热编码矢量标签,当我们要使用二进制交叉entrpoy训练。有些人建议将一个热向量表示为[0。(如果等级为1)或[1。0.](如果类为0)表示二进制交叉熵。 我正在使用一个热编码器[01]或[10]与分类交叉熵。我的最后一层是

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

    # Compile model
  model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])

Tags: 模型图像add编码model矢量二进制分类
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个类,那么从编码的角度来看,使用二进制交叉熵更容易。根据实现的不同,二进制情况在计算上可能更有效。在

似乎,二元交叉熵只是范畴交叉熵的一个特例。所以,当你只有两个类时,你可以使用二进制交叉熵,你不需要做一个热编码,你的代码会少几行。在

相关问题 更多 >

    热门问题