解决Pytorch 训练与测试时爆显存(out of memory)的问题


Posted in Python onAugust 20, 2019

Pytorch 训练时有时候会因为加载的东西过多而爆显存,有些时候这种情况还可以使用cuda的清理技术进行修整,当然如果模型实在太大,那也没办法。

使用torch.cuda.empty_cache()删除一些不需要的变量代码示例如下:

try:
  output = model(input)
except RuntimeError as exception:
  if "out of memory" in str(exception):
    print("WARNING: out of memory")
    if hasattr(torch.cuda, 'empty_cache'):
      torch.cuda.empty_cache()
  else:
    raise exception

测试的时候爆显存有可能是忘记设置no_grad, 示例代码如下:

with torch.no_grad():
    for ii,(inputs,filelist) in tqdm(enumerate(test_loader), desc='predict'):
      if opt.use_gpu:
        inputs = inputs.cuda()
        if len(inputs.shape) < 4:
          inputs = inputs.unsqueeze(1)
 
      else:
        if len(inputs.shape) < 4:
          inputs = torch.transpose(inputs, 1, 2)
          inputs = inputs.unsqueeze(1)

以上这篇解决Pytorch 训练与测试时爆显存(out of memory)的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中requests模块的使用方法
Apr 08 Python
简单介绍Python的Tornado框架中的协程异步实现原理
Apr 23 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
python的keyword模块用法实例分析
Jun 30 Python
python WindowsError的错误代码详解
Jul 23 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
基于python requests库中的代理实例讲解
May 07 Python
python制作抖音代码舞
Apr 07 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
python使用matplotlib绘制雷达图
Oct 18 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
深入理解pytorch库的dockerfile
Jun 10 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 #Python
python3中替换python2中cmp函数的实现
Aug 20 #Python
python 并发编程 多路复用IO模型详解
Aug 20 #Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 #Python
对pytorch中的梯度更新方法详解
Aug 20 #Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 #Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 #Python
You might like
php数据库配置文件一般做法分享
2012/07/07 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue实例的选项总结
2020/06/09 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
django允许外部访问的实例讲解
2018/05/14 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
机电一体化毕业生求职信
2013/11/02 职场文书
市场营销战略计划书
2014/05/06 职场文书
主题班会演讲稿
2014/05/22 职场文书
春节慰问信范文
2015/02/15 职场文书
高中数学教学反思范文
2016/02/18 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
导游词之井冈山
2019/11/20 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS