官网是这么介绍 CrossEntropyLoss 的:
This criterion combines LogSoftmax and NLLLoss in one single class.
它将 LogSoftmax 与 NLLLoss 结合在单个类中.
用相应的函数进行验证:
import torch
import torch.nn.functional as F
N = 32
num_class = 1000
input = torch.randn(N, num_class)
target = torch.empty(N, dtype=torch.long).random_(num_class)
print(F.cross_entropy(input, target))
print(F.nll_loss(F.log_softmax(input, dim=-1), target))
输出:
tensor(7.2664)
tensor(7.2664)