解决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使用代理抓取网站图片(多线程)
Mar 14 Python
Python中apply函数的用法实例教程
Jul 31 Python
Python使用MD5加密字符串示例
Aug 22 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
详解python eval函数的妙用
Nov 16 Python
numpy中的高维数组转置实例
Apr 17 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
django框架模板语言使用方法详解
Jul 18 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
python 经典数字滤波实例
Dec 16 Python
pygame用blit()实现动画效果的示例代码
May 28 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查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
Python中的startswith和endswith函数使用实例
2014/08/25 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Python 登录网站详解及实例
2017/04/11 Python
pandas的连接函数concat()函数的具体使用方法
2019/07/09 Python
Python用SSH连接到网络设备
2021/02/18 Python
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
采购部部长岗位职责
2014/02/06 职场文书
老公给老婆的保证书
2014/04/28 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
四年级学生期末评语
2014/12/26 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
python正则表达式re.search()的基本使用教程
2021/05/21 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python