Ubuntu系统训练Pytorch模型时被kill的问题

本文介绍了在Ubuntu系统中使用PyTorch训练模型时遇到的程序被kill的问题。问题源于在累加loss时未使用loss.item(),导致内存不断消耗。修正方法是在累加时使用loss.item(),防止动态图机制无限扩展。理解Variable在PyTorch动态图中的作用是解决此类问题的关键。

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

Ubuntu系统训练Pytorch模型时被kill的问题


最近在训练一个pytorch模型时,出现程序被ubuntu系统kill的问题,问题截图如下:
问题图片
训练到一定轮次,系统内容似乎就被占满了,导致程序被kill。
查询原因时,发现是因为在累加loss时忘记使用loss.item(),直接使用了loss累加:
原版:

avgloss.update(loss, image.size(0))

将其修改为:

avgloss.update(loss.item(), image.size(0)) # 这里loss要加.item(),否则占用内存会越来越大,导致程序被kill

原因分析:
这是因为输出的loss的数据类型是Variable。而PyTorch的动态图机制就是通过Variable来构建图。主要是使用Variable计算的时候,会记录下新产生的Variable的运算符号,在反向传播求导的时候进行使用。如果这里直接将loss加起来,系统会认为这里也是计算图的一部分,也就是说网络会一直延伸变大那么消耗的显存也就越来越大。

参考链接:https://blog.csdn.net/qq_35899290/article/details/103549280

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值