在 PyTorch 中,nn.CrossEntropyLoss()
是一个非常常用且功能强大的损失函数
,特别适合用于多类分类
问题。这个损失函数结合了 nn.LogSoftmax()
和 nn.NLLLoss()
(Negative Log Likelihood Loss) 两个操作,从而在一个模块中提供完整的交叉熵损失
计算功能。这不仅方便使用,也提高了数值稳定性。
功能说明
nn.CrossEntropyLoss()
计算模型输出
和实际标签
之间的交叉熵损失
。它自动完成
了 softmax 概率分布
的计算和对数似然损失
的计算,这意味着你应该直接将网络的原始输出
(logits,即未经 softmax 层处理的输出
)作为 CrossEntropyLoss
的输入。
上面这句话非常重要,这就是为什么在用交叉熵损失函数的时候,在模型的输出部分见不到softmax的原因。
参数详解
nn.CrossEntropyLoss
主要有以下几个参数:
weight
(Tensor, optional): 一个手动指定的权重,用于平衡类别间的损失贡献。这在类别不平衡的情况下非常有用。size_average
(bool, deprecated): 这个参数已经被弃用,用reduction
参数代替。