python - 多标签分类损失函数

标签 python tensorflow neural-network classification multilabel-classification

我在很多地方看到,对于使用神经网络的多标签分类,一个有用的损失函数是每个输出节点的二元交叉熵。

在 Tensorflow 中它看起来像这样:

cost = tf.nn.sigmoid_cross_entropy_with_logits()

这给出了一个数组,其值与我们拥有的输出节点一样多。

我的问题是,这个成本函数是否应该根据输出节点的数量进行平均?在 Tensorflow 中看起来像:

cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits())

或者每个损失都是独立处理的?

谢谢

最佳答案

对于 N多标签分类中的标签,无论您是对每个类别的损失求和,还是使用 tf.reduce_mean 计算平均损失都无关紧要:渐变会指向同一方向。

但是,如果您将总和除以 N (这就是平均的本质),这将影响一天结束时的学习率。如果不确定多标签分类任务中会有多少个标签,使用tf.reduce_mean可能更容易。 ,因为与损失的其他部分相比,您不必重新调整此损失部分的权重,也不必调整数字 N 中的学习率标签更改。

关于python - 多标签分类损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50395170/

相关文章:

python - Numpy 3d 数组索引

python - groupby() 对象上的 pandas apply() 运行次数比组数多

python - 分支列表排序

python - 如何在 TensorFlow 中迭代张量的元素?

python - TfidfVectorizer 出错但 CountVectorizer 正常

python - 如何存储和访问经过训练的神经网络

python - `reveal_type` 输出中的星号是什么意思?

python - Keras 中的 model(x) 和 model.predict(x) 之间的区别?

neural-network - 人工神经网络和贝叶斯网络的区别

javascript - Tensorflow Js 中多时间序列预测的最佳方法