pytorch异常——loss异常,不断增大,并且loss出现inf

这篇具有很好参考价值的文章主要介绍了pytorch异常——loss异常,不断增大,并且loss出现inf。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

异常报错

epoch1:loss3667.782471
epoch2:loss65358620.000000
epoch3:loss14979486720.000000
epoch4:loss1739650891776.000000
epoch5:loss12361745880317952.000000
epoch6:loss2740315398365287284736.000000
epoch7:loss1176857261847129541794856960.000000
epoch8:loss7211548287231028836649926656.000000
epoch9:loss7537356298471407320145204346880.000000
epoch10:lossinf



异常截图

pytorch异常——loss异常,不断增大,并且loss出现inf,异常,pytorch异常,inf

异常代码

# 初始化模型的参数,使用正态分布来初始化权重参数,将偏置设置为0
net[0].weight.data.normal_(0,0.01)
net[0].bias.data.fill_(0)

# 定义损失函数
loss = nn.MSELoss()


# 定义优化算法
trainer = torch.optim.SGD(net.parameters(),lr = 0.03)

# 训练
# 训练过程:遍历完整的数据集,每一次都是抽取一个batch_size,然后在进行前向传播计算对应的loss,然后将loss反向传播,计算梯度,然后根据梯度优化参数
num_epochs = 10
for epoch in range(num_epochs):
    for X,y in data_iter:
        l = loss(net(X),y)
        l.backward()
        trainer.step()
    l = loss(net(features),labels)
    print(f'epoch{epoch+1}:loss{l:f}')

原因解释

  • 每一个batch_size之后,都没有进行梯度清零,模型参数更新是基于之前所有的mini_batch,并不是基于当前的mini_batch

  • 导致如下问题

    • 梯度爆炸:如果梯度值在每次迭代中都相对较大,那么累积梯度可能会迅速变得非常大,导致权重更新太过极端。这通常会导致损失值变成 NaN 或 Inf
    • 训练不稳定:如果梯度值在每次迭代中都相对较大,那么累积梯度可能会迅速变得非常大,导致权重更新太过极端。这通常会导致损失值变成 NaN 或 Inf
  • 梯度下降的基本假设:

    • 每次更新都是基于最近一次计算出的梯度,

修正代码

# 初始化模型的参数,使用正态分布来初始化权重参数,将偏置设置为0
net[0].weight.data.normal_(0,0.01)
net[0].bias.data.fill_(0)

# 定义损失函数
loss = nn.MSELoss()


# 定义优化算法
trainer = torch.optim.SGD(net.parameters(),lr = 0.03)

# 训练
# 训练过程:遍历完整的数据集,每一次都是抽取一个batch_size,然后在进行前向传播计算对应的loss,然后将loss反向传播,计算梯度,然后根据梯度优化参数
num_epochs = 10
for epoch in range(num_epochs):
    for X,y in data_iter:
        l = loss(net(X),y)
        trainer.zero_grad()
        l.backward()
        trainer.step()
    l = loss(net(features),labels)
    print(f'epoch{epoch+1}:loss{l:f}')

执行结果

pytorch异常——loss异常,不断增大,并且loss出现inf,异常,pytorch异常,inf文章来源地址https://www.toymoban.com/news/detail-685204.html

到了这里,关于pytorch异常——loss异常,不断增大,并且loss出现inf的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pytorch如何使用Focal Loss

    Focal loss 是 文章 Focal Loss for Dense Object Detection 中提出对简单样本的进行 decay 的一种损失函数。是对标准的 Cross Entropy Loss 的一种改进。 FL 对于简单样本(p比较大)回应较小的loss。 如论文中的图1, 在p=0.6时, 标准的 CE 然后又较大的 loss , 但是对于FL就有相对较小的loss回应

    2024年02月10日
    浏览(26)
  • 对于训练时loss出现负值的情况

    在训练时候loss出现负值,就立马停下来分析一下原因在哪。最有可能是损失函数出现问题,开始只使用交叉熵损失时没有出现过,在加上了dice loss时就出现了问题。于是就去dice loss中寻找原因。 1:首先需要明白语义分割的GT, 每一个像素点的值就是像素的类别。 打印结果:

    2024年01月19日
    浏览(43)
  • 深度学习:Pytorch常见损失函数Loss简介

    此篇博客主要对深度学习中常用的损失函数进行介绍,并结合Pytorch的函数进行分析,讲解其用法。 L1 Loss计算预测值和真值的平均绝对误差。 L o s s ( y , y ^ ) = ∣ y − y ^ ∣ Loss(y,hat{y}) = |y-hat{y}| L oss ( y , y ^ ​ ) = ∣ y − y ^ ​ ∣ Pytorch函数: 参数: size_average (bool, optional) –

    2024年02月13日
    浏览(32)
  • 交叉熵、Focal Loss以及其Pytorch实现

    本文参考链接:https://towardsdatascience.com/focal-loss-a-better-alternative-for-cross-entropy-1d073d92d075 损失是通过梯度回传用来更新网络参数是之产生的预测结果和真实值之间相似。不同损失函数有着不同的约束作用,不同的数据对损失函数有着不同的影响。 交叉熵是常见的损失函数,常

    2024年02月11日
    浏览(50)
  • Pytorch3d中的倒角损失函数Chamfer Distance Loss的用法(pytorch3d.loss.chamfer_distance)

    API文档在这里 源码在这里 之前看到的一个干货满满的Pytorch3D安装指导与简单例子的帖子在这里  官方tutorials中提到的用法在下面这个代码块里面,前面后面东西都挺多的就把和chamfer_distance相关的摘到了这里

    2024年02月15日
    浏览(31)
  • K8s中内置的Prometheus 异常,不断重启的解决方案

    要说明的一点是: 此处理方式会进行数据的删除 ,并且多实例情况下最好都做下操作。多实例都操作一遍的意思就是比如我普罗米修斯有如下四个: 如果Prometheus-k8s-0一直重启,则不光需要操作Prometheus-k8s-0,也需要对它的另一个实例Prometheus-k8s-1进行处理。如果是Prometheus-k

    2024年02月15日
    浏览(41)
  • 升级iOS 17出现白苹果、不断重启等系统问题怎么办?

    iOS 17发布后了,很多果粉都迫不及待的将iphone/ipad升级到最新iOS17系统,体验新系统功能。 但部分果粉因硬件、软件的各种情况,导致升级系统后出现故障,比如白苹果、不断重启、卡在系统升级界面等等问题。 如果遇到了这些系统问题,首选我们可以选择强制重启设备来修

    2024年02月09日
    浏览(37)
  • (具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0

    今天小陶在训练CGAN的时候出现了绷不住的情况,那就是G_loss(生成器的loss值)一路狂飙,一直上升到了6才逐渐平稳。而D_loss(判别器的loss值)却越来越小,具体的情况就看下面的图片吧。其实这在GAN训练里是非常容易遇到的问题,所以不用慌,是有解决的办法的。小陶就通

    2024年02月14日
    浏览(36)
  • pytorch——损失函数之nn.L1Loss()和nn.SmoothL1Loss()

    今天讨论下:对称损失函数:symmetric regression function such as L1 or L2 norm,注意说说L1 1.1 数学定义 平均绝对误差(MAE)是一种用于回归模型的损失函数。MAE 是目标变量和预测变量之间绝对差值之和,因此它衡量的是一组预测值中的平均误差大小,而不考虑它们的方向,范围为

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包