参考自HawardScut
很多的 loss 函数都有 size_average 和 reduce 两个布尔类型的参数。因为一般损失函数都是直接计算 batch 的数据,因此返回的 loss 结果都是维度为 (batch_size, ) 的向量。
- (1)如果 reduce = False,那么 size_average 参数失效,直接返回向量形式的 loss
- (2)如果 reduce = True,那么 loss 返回的是标量
- a)如果 size_average = True,返回 loss.mean();
- b)如果 size_average = False,返回 loss.sum();
- 上面选择mean或者sum都可,但是要注意若为mean那么需要除以一个N,那么其求导的值相对于sum就会变小,因此在后续优化器中需要适当调整学习率
注意:默认情况下, reduce = True,size_average = True