解决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字典多条件排序方法实例
Jun 30 Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
多个应用共存的Django配置方法
May 30 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
pandas实现将日期转换成timestamp
Dec 07 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
Python格式化输出--%s,%d,%f的代码解析
Apr 29 Python
Python grequests模块使用场景及代码实例
Aug 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的FTP学习(三)
2006/10/09 PHP
php上传文件的增强函数
2010/07/21 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
JS函数本身的作用域实例分析
2020/03/16 Javascript
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
答题辅助python代码实现
2018/01/16 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
就业推荐表自我鉴定范文
2014/03/21 职场文书
医师定期考核实施方案
2014/05/07 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
毕业生个人总结
2015/02/28 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
python自动化测试之Selenium详解
2022/03/13 Python
Python字符串格式化方式
2022/04/07 Python