pytorch训练时显存溢出

网络在前期可以正常训练,但训练几轮后就发生显存爆炸的问题,调整输入大小或者每次循环都清除显存 也无法解决问题,后来经过查询,是在对loss求和时,直接使用

tl += loss

可以看到,loss是张量,经过运算后,tl也是张量,在神经网络中,pytorch会默认将张量操作放到计算图中,随着训练次数的增加,计算图会越来越大,直至显存爆炸。

解决办法:

tl += loss.item()

计算图原理:

        计算图中每个节点代表一个输入,每条边代表一个运算操作。例如y=(a+b)(b+c),则a,b,c都是节点,之后a+b在连接到一个节点,b+c连接到一个节点,最后两节点连接输出。

pytorch是动态建立计算图,边建立边计算。

tensorflow是静态建立计算图

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值