版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaomifanhxx/article/details/85917258
1 softmax
函数Softmax(x)是一个non-linearity,但它的特殊之处在于它通常是网络中的一次操作,这是因为它接受了一个实数向量并返回一个概率分布,其定义如下,定义x是一个实数的向量(正数或负数都无所谓,没有限制)。然后,第i个Softmax(x)的组成是
输出是一个概率分布:每个元素都是非负的,并且所有元素的总和都是1
2 log_softmax
在softmax的结果上再做多一次log运算
(效果在查)
3 nn.CrossEntropyLoss()与NLLLoss()
NLLLoss的输入是一个对数概率向量和一个目标标签,它不会为我们计算对数概率。适合网络的最后一层是log_softmax。损失函数nn.CrossEntropyLoss()与NLLLoss()相同。唯一不同的是它为我们去做softmax。
4 Log似然代价函数
其中,ak表示第k个神经元的输出值;yk表示第k个神经元对应的真实值,取值为0或1.实际上,做分类的时候,只有一个yi为1,其他均为0,最终结果是C=-yklogak(ak对应着正确的那一个分类,log默认是e为底,ak在[0,1],当ak最大的时候,C=0),即损失为0。
未完待续
参考博客: