一. 交叉熵损失函数(CrossEntropyLoss — PyTorch 1.11.0 documentation)
简单谈谈Cross Entropy Loss_时光杂货店的博客-CSDN博客_crossentropyloss
分类用交叉熵,回归用均方差。
softmax层是归一化到0~1之间,先通过指数函数,再指数函数求和除以和
假设预测 3 个类别,总共有a1,a2,a3,b1,b2,b3,c1,c2,c3,共9个目标,a,b,c一共3个类别。
神经网络有一个输入口,有三个输出口,a1,a2和a3的标签值是(1,0,0);b1,b2和b3的标签值是(0,1,0);c1,c2和c3的标签值是(0,0,1)。
假设给一个目标输入,输出口吐出来3个数(3,6,10)。
此时如何计算损失呢?交叉熵损失这时候就开始起作用了。(不要信网上其他人写的,你这个绝对正确,已经验证)
这3个数还要经过softmax层,首先计算第一个口的概率,再计算第二个口的概率
,最后计算第三个口的概率
。
吐出3个概率。
假设此时输入目标的标签是(0,0,1)。
那么这个目标计算出来的交叉熵损失就是:
在验证的时候还遇到下面的问题
上面的错误是由于类型错误,改成下面的,注意输入输出维数即可正确,一定要是2维,第0维代表batchsize数,第1维才表示一个目标的输出。
上面两幅图就是验证了交叉熵损失函数的计算方式如上matlab所示,选择mean方式时,除以batchsize。
二. BCEWithLogitsLoss和BCELoss
说一下,我目前对这个函数的体会,这是个啥,我需要什么数据来输入,label和target值怎么传入,这个损失函数适用什么问题?
以上是官方文档给的说明,说实话我看得云里雾里
这篇博客剖析得挺仔细的
Pytorch详解BCELoss和BCEWithLogitsLoss_豪哥123的博客-CSDN博客_bcewithlogitsloss
损失函数 | BCE Loss(Binary CrossEntropy Loss)_一颗磐石的博客-CSDN博客_bce损失函数
由此,也让你产生了一个疑问,多标签分类问题是什么意思? 涉及到softmax