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中元素位置的概率,取负值再求平均。
参考:
博客介绍了Pytorch中CrossEntropyLoss()的计算过程。prob是形状为[batch_size, category_num]的tensor,target是形状为[batch_size,]的tensor。其计算先对prob每行做softmax(),再对矩阵元素求log(),最后进行NLLLoss(),挑出对应概率取负值求平均。
1641

被折叠的 条评论
为什么被折叠?



