解决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 Django(图文)
Nov 04 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
Python导出数据到Excel可读取的CSV文件的方法
May 12 Python
python简单分割文件的方法
Jul 30 Python
python使用opencv进行人脸识别
Apr 07 Python
Django添加sitemap的方法示例
Aug 06 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
python实现大文本文件分割
Jul 22 Python
Python解析json时提示“string indices must be integers”问题解决方法
Jul 31 Python
Python 如何安装Selenium
May 06 Python
Python自动化实战之接口请求的实现
May 30 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
PHP5 字符串处理函数大全
2010/03/23 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
php教程之phpize使用方法
2014/02/12 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
pygame学习笔记(4):声音控制
2015/04/15 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
全球精选男装和家居用品:Article
2020/04/13 全球购物
智能电子应届生求职信
2013/11/10 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
总经理人事任命书
2014/06/05 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
退休欢送会主持词
2015/07/01 职场文书
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python