解决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实现人人网登录示例分享
Jan 19 Python
Python脚本获取操作系统版本信息
Dec 17 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
python实现log日志的示例代码
Apr 28 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
python 合并多个excel中同名的sheet
Jan 22 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 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/04/26 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
关于Django外键赋值问题详解
2017/08/13 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python实现按行分割文件
2019/07/22 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
上班迟到检讨书
2014/01/10 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
检讨书模板大全
2015/05/07 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python