首页 > 解决方案 > 为什么在 Keras 的多类分类中 binary_crossentropy 比 categorical_crossentropy 表现更好?

问题描述

我在 stackoverflow 中看到了许多类似的问题,但这些都不是我的案例。

我有一个多类分类问题,我的标签是互斥的。

由于拼写错误而使用 binary_crossentropy 进行训练,从而降低了损失并提高了准确性。这里有趣的是,与 stackoverflow 中的其他问题不同,我正在打印 Keras 的“categorical_accuracy”。我的标签是一次性编码的。

所以,确切地说,我的代码如下所示:

net = Sequential() 
net.add(TimeDistributed(model_A, input_shape=(timesteps,960, 75, 1))) 
net.add(LSTM(100))
net.add(Dropout(0.5))
net.add(Dense(100, activation='relu'))
net.add(Dense(len(labels), activation='softmax'))

net.compile(loss='binary_crossentropy', optimizer=adam_opt, metrics=['binary_accuracy', 'categorical_accuracy'])

我还尝试使用“categorical_crossentropy”进行训练,当我注意到错字并且结果更糟时。这怎么解释?

标签: pythontensorflowkerasmetricscross-entropy

解决方案


推荐阅读