我在许多地方看到,对于使用神经网络的多标记分类,一个有用的损失函数是每个输出节点的二进制交叉熵。
在Tensorflow中,它看起来是这样的:
cost = tf.nn.sigmoid_cross_entropy_with_logits()这提供了一个数组,其值与我们拥有的输出节点一样多。
我的问题是,这个成本函数是否应该与输出节点的数量相加?在Tensorflow中是这样的:
cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits())还是每个损失都是独立处理的?
谢谢
发布于 2018-05-17 15:35:44
对于多标签分类中的N标签,是否将每个类的损失相加,还是使用tf.reduce_mean计算平均损失并不重要:梯度将指向相同的方向。
然而,如果您除以N (这是实质上的平均值),这将影响一天结束时的学习速度。如果您不确定在多标签分类任务中会有多少个标签,那么使用tf.reduce_mean可能会更容易,因为与其他丢失组件相比,您不必重新调整这个丢失组件的权重,而且您也不必调整标签更改的数量N中的学习速率。
https://stackoverflow.com/questions/50395170
复制相似问题