import torch.nn as nn
torch.log(F.softmax(prob)) <=> nn.LogSoftmax()(prob)
nn.CrossEntropyLoss()(prob,target) <=> nn.NLLLoss()(nn.LogSoftmax()(prob) , target)
prob为形状为[batch_size , category_num]的tensor
target为形状为[batch_size,]的tensor
CrossEntropyLoss()的计算过程为 先对prob的每一行做softmax(),再对矩阵的所有元素求log(),再进行NLLLoss(),即挑出每行对应的target中元素位置的概率,取负值再求平均。
参考: