我有一个简单的 logit 和目标张量,并使用 Pytorch 的模块计算交叉熵from torch.nn import functional as F
。
>>> F.cross_entropy(torch.tensor([[0.25, 0.5, 0.25]]), torch.tensor([0]))
tensor(1.1891)
我得到的答案是 1.1891。但根据cross_entropy损失的方程,答案不应该是
-(1*ln(0.25) + 0*ln(0.5) + 0*ln(0.25) = -ln(0.25) = 1.386
?
到底是怎么回事?
因为你不知道它是如何计算的。文档中提到了它(相关文档)
它首先计算条目的softmax,然后计算交叉熵。
简而言之
这是它所指的链接文档