Pytorch损失函数总结

一. 交叉熵损失函数(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层,首先计算第一个口的概率p_1 = \frac{e^3}{e^3+e^6+e^9},再计算第二个口的概率p_2 = \frac{e^6}{e^3+e^6+e^9},最后计算第三个口的概率p_3 = \frac{e^9}{e^3+e^6+e^9}

吐出3个概率。

        假设此时输入目标的标签是(0,0,1)。 

        那么这个目标计算出来的交叉熵损失就是:-(0 * log_{2}p_{1}+0 * log_{2}p_{2}+1 * log_{2}p_{3})

在验证的时候还遇到下面的问题

 上面的错误是由于类型错误,改成下面的,注意输入输出维数即可正确,一定要是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值