Pytorch堆叠多个损失造成内存爆炸

这篇具有很好参考价值的文章主要介绍了Pytorch堆叠多个损失造成内存爆炸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这几天跑代码的时候,跑着跑着就显示被killed掉(整个人都不好了)。查系统日志发现是内存不够(out of memory),没……办……法……了,直接放弃!当然这是不可能的,笔者怎么可能是个轻言放弃的人呢,哈哈。

言归正传,笔者用的设备是3T的硬盘,跑的程序batch_size=1024,共划分了2000个batch,每跑一个batch内存占用率就会升高,0.5%左右,无奈之下只能一句一句debug,最后后发现是损失累加造成的,如下放所示,代码共计算了三个损失:BPR Loss , Reg Loss , InfoNCE Loss,不能直接累加作为total_loss!而是通过.item()将损失值取出,再累加。文章来源地址https://www.toymoban.com/news/detail-536177.html

# BPR Loss
bpr_loss = -torch.sum(F.logsigmoid(sup_logits)) 

# Reg Loss
reg_loss = l2_loss(
self.lightgcn.user_embeddings(bat_users),
self.lightgcn.item_embeddings(bat_pos_items),
self.lightgcn.item_embeddings(bat_neg_items),
)
                
# InfoNCE Loss
clogits_user = torch.logsumexp(ssl_logits_user / self.ssl_temp, dim=1)
clogits_item = torch.logsumexp(ssl_logits_item / self.ssl_temp, dim=1)
infonce_loss = torch.sum(clogits_user + clogits_item)
    
loss = bpr_loss + self.ssl_reg * infonce_loss + self.reg * reg_loss

total_loss = total_loss + loss.item() 
total_bpr_loss += bpr_loss.item()
total_reg_loss += self.reg * reg_loss.item()
               
self.optimizer.zero_grad()
loss.backward()
self.optimizer.step()

到了这里,关于Pytorch堆叠多个损失造成内存爆炸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • PyTorch损失函数(二)

    nn.L1Loss 是一个用于计算输入和目标之间差异的损失函数,它计算输入和目标之间的绝对值差异。 主要参数: reduction :计算模式,可以是 none 、 sum 或 mean 。 none :逐个元素计算损失,返回一个与输入大小相同的张量。 sum :将所有元素的损失求和,返回一个标量值。 mean :

    2024年01月17日
    浏览(38)
  • Pytorch——常用损失函数详解

    首先直接贴上个人看过比较好的一些的解析: 深度学习之常用损失函数 损失函数loss大总结 损失函数(Loss Function) pytorch中的gather函数_PyTorch中的损失函数–L1Loss /L2Loss/SmoothL1Loss 很全的Pytorch loss函数汇总: pytorch loss function 总结 1. 余弦损失函数 torch.nn.CosineEmbeddingLoss 余弦损失

    2024年02月09日
    浏览(37)
  • [pytorch] 8.损失函数和反向传播

    torch提供了很多损失函数,可查看官方文档Loss Functions部分 作用: 计算实际输出和目标输出之间的差距 为更新输出提供一定的依据(反向传播),grad 损失函数用法差不多,这里以L1Loss和MSEloss为例 L1Loss 注意传入的数据要为float类型,不然会报错,所以inputs和outputs处要加上类

    2024年01月25日
    浏览(36)
  • pytorch-损失函数-分类和回归区别

    torch.nn 库和 torch.nn.functional库的区别 torch.nn 库:这个库提供了许多预定义的层,如全连接层(Linear)、卷积层(Conv2d)等,以及一些损失函数(如MSELoss、CrossEntropyLoss等)。这些层都是类,它们都继承自 nn.Module ,因此可以很方便地集成到自定义的模型中。 torch.nn 库中的层都

    2024年02月05日
    浏览(45)
  • 【PyTorch】在PyTorch中使用线性层和交叉熵损失函数进行数据分类

    在机器学习的众多任务中,分类问题无疑是最基础也是最重要的一环。本文将介绍如何在PyTorch框架下,使用线性层和交叉熵损失函数来解决分类问题。我们将以简单的Iris数据集作为起点,探讨线性模型在处理线性可分数据上的有效性。随后,我们将尝试将同样的线性模型应

    2024年01月18日
    浏览(53)
  • 深度学习: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日
    浏览(43)
  • PyTorch中常见损失函数的简单解释和使用

    损失函数,又叫目标函数。在编译神经网络模型必须的两个参数之一。另一个必不可少的就是优化器,我将在后面详解到。 重点 损失函数是指计算机标签值和预测值直接差异的函数。 这里我们会结束几种常见的损失函数的计算方法,pytorch中也是以及定义了很多类型的预定义

    2024年02月09日
    浏览(34)
  • PyTorch各种损失函数解析:深度学习模型优化的关键(2)

    目录 详解pytorch中各种Loss functions mse_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示  margin_ranking_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式  代码演示 multilabel_margin_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 multilabel_soft_margin_

    2024年01月19日
    浏览(65)
  • 利用pytorch自定义CNN网络(四):损失函数和优化器

    本文是利用pytorch自定义CNN网络系列的第四篇,主要介绍如何训练一个CNN网络,关于本系列的全文见这里。 笔者的运行环境:CPU (AMD Ryzen™ 5 4600U) + pytorch (1.13,CPU版) + jupyter; 训练模型是为了得到合适的参数权重,设计模型的训练时,最重要的就是损失函数和优化器的选择。

    2024年02月13日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包