pytorch系列 --11 pytorch loss function: MSELoss BCELoss CrossEntropyLoss及one_hot 格式求 cross_entropy

本文详细介绍了PyTorch中的几种损失函数,包括MSELoss用于回归问题,以及BCELoss和CrossEntropyLoss用于分类问题。还探讨了交叉熵损失函数的原理,并给出了不同reduction参数下的计算示例。同时,讨论了如何处理one_hot编码的目标变量,并提供了自定义实现CrossEntropyLoss的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要包括:

  1. pytorch 实现的损失函数

pytorch实现的loss function

神经网络主要实现分类以及回归预测两类问题,对于回归问题,主要讲述均方损失函数,而对于一些回归问题,需要根据特殊情况自定义损失函数。对于分类,主要讲述二分类交叉熵和多分类交叉熵函数

在讲解函数之前,提前说一下:

  1. 所有的loss的基类是Module,所以使用loss的方法是:
# 1. 创建损失函数对象,并指定返回结果,默认为:平均值 以MSE为例
criterion = MSELoss(reduction='...')
# 2.  定义input x, traget y
x = torch.tensor(...) 
y = torch.tensor(...)
# 计算损失函数
loss = criterion(x, y)
  1. 在pytorch 0.4中,参数size_averagereduce已被舍弃,使用reduction参数控制损失函数的输出行为。
  • reduction (string, optional)
    • ‘none’: 不进行数据降维,输出为向量
    • ‘elementwise_mean’: 将向量中的数累加求和,然后除以元素数量,返回误差的平均值
    • ‘sum’: 返回向量的误差值的和
1. class torch.nn.MSELoss(size_average=None, reduce=None, reduction='elementwise_mean')

计算输入x和标签y,n个元素平均平方误差(mean square error),x和y具有相同的Size

损失函数如下定义:
ℓ ( x , y ) = L = { l 1 , … , l N } ⊤ , l n = ( x n − y n ) 2 \ell(x, y) = L = \{l_1,\dots,l_N\}^\top, \quad l_n = ( x_n - y_n )^2 (x,y)=L={ l1,,lN},ln=(xnyn)2
如果reduction != ‘none’:
ℓ ( x , y ) = { mean ⁡ ( L ) , if &ThickSpace; reduction = ’elementwise_mean’ , sum ⁡ ( L ) , if &ThickSpace; reduction = ’sum’ . \ell(x, y) = \begin{cases} \operatorname{mean}(L), &amp; \text{if}\; \text{reduction} = \text{&#x27;elementwise\_mean&#x27;},\\ \operatorname{sum}(L), &amp; \text{if}\; \text{reduction} = \text{&#x27;sum&#x27;}. \end{cases} (x,y)={ mean(L),sum(L),ifreduction=’elementwise_mean’,ifreduction=’sum’<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值