python - 为什么在 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”进行训练,当我注意到错字并且结果更糟时。这怎么解释?
解决方案
推荐阅读
- c++ - 使用对象和移动语义的向量 push_back 方法
- excel - 无论如何将以下单元格引用修改为范围?
- alpine - 如何在 alpine Linux 中安装 gnustep?
- c - C 编程 - 无法使用指针将字符串从缓冲区复制到给定的字符数组
- r - rbindlist 出错:内部错误:结果的第 4 列被确定为 integer64 但 maxType=='character' != REALSXP
- python - 如果索引中的值为 NaN 或空白字符串,如何从数据框中删除一行
- wordpress - Wordpress 和 woocommerce 复选框不可见
- spring - spring boot security 不允许我访问 h2-console
- javascript - 如何捕获倒数第二场比赛?
- python - 将图像文件发送到 AWS Lambda 函数