解决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采用socket模拟TCP通讯的实现方法
Nov 19 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
Apr 28 Python
python结合API实现即时天气信息
Jan 19 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
Python中整数的缓存机制讲解
Feb 16 Python
Python列表(List)知识点总结
Feb 18 Python
python实现本地批量ping多个IP的方法示例
Aug 07 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Django继承自带user表并重写的例子
Nov 18 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
python3实现常见的排序算法(示例代码)
Jul 04 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的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
详解微信小程序input标签正则初体验
2018/08/18 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
python批量提交沙箱问题实例
2014/10/08 Python
Python读取word文本操作详解
2018/01/22 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
小学生新学期寄语
2014/01/19 职场文书
学校运动会报道稿
2014/09/23 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
学习党史心得体会2016
2016/01/23 职场文书