在许多神经网络应用中,人们倾向于将
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels,logits)
[tensorflow functions] 定义为损失函数。为什么要加tf.reduce_mean
(计算期望值)?
交叉熵与交叉熵的平均值
机器算法验证
机器学习
神经网络
期望值
2022-03-22 19:43:14
1个回答
对于随机梯度下降等在线训练方法,每次迭代的损失反映了单个数据点的贡献。因此,在这种情况下不需要求和。对于批量或小批量训练,有必要通过求和或均值来组合批量/小批量中每个点的损失。
取总和时,损失取决于数据点的数量(在批量训练的情况下)或小批量大小(在小批量训练的情况下)。另请注意,每个小批量中的点数可能会有所不同。取平均值可以将损失与这些影响脱钩。
这有几个好处:
它可以更轻松地比较具有不同点数的数据集之间的损失,或者具有不同小批量大小的迭代之间的损失。
它可以更改点数或小批量大小,而无需更改步长、正则化(或惩罚)强度等其他参数。
在 minibatch 训练的情况下,它确保所有 minibatch 的贡献相同。取总和会给包含更多点的小批量更高的权重。
其它你可能感兴趣的问题