softmax(x) 函数:输入一个实数向量并返回一个概率分布
log_softmax(x) 函数:对经过softmax的函数经过一次对数运算
NLLLoss 损失:负对数似然损失,negative log likelihood loss,若????=[??1,??2,...,????]xi=[q1,q2,...,qN] 为神经网络对第i个样本的输出值,????yi为真实标签。 则:??(????,????)=−??????
??N分类问题,对于一个特定的样本,已知其真实标签,CrossEntropy的计算公式为:??????????_??????????????=−∑??=1??(????∗log????)cross_entropy=−∑k=1N(pk∗log?qk)
其中p表示真实值,在这个公式中是one-hot形式;q是经过softmax计算后的结果, ????qk为神经网络认为该样本为第??k类的概率。
仔细观察可以知道,因为p的元素不是0就是1,而且又是乘法,所以很自然地我们如果知道1所对应的index,那么就不用做其他无意义的运算了。所以在pytorch代码中target不是以one-hot形式表示的,而是直接用scalar表示。若该样本的真实标签为??y,则交叉熵的公式可变形为:
softmax 和 带有温度t的softmax性质分析, 带有温度的softmax使得输出的概率分布更加平滑
感谢up主,https://www.bilibili.com/video/av87124082?from=search&seid=15136075071288444663
softmax、log_softmax、NLLLoss和交叉熵损失对比分析
原文:https://www.cnblogs.com/demo-deng/p/12381698.html