pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作


Posted in Python onMay 25, 2020

问题描述

有时在加载已训练好的模型时,会出现 out of memory 的错误提示,但仔细检测使用的GPU卡并没有再用且内存也没有超出。

经查阅发现原来是训练模型时使用的GPU卡和加载时使用的GPU卡不一样导致的。个人感觉,因为pytorch的模型中是会记录有GPU信息的,所以有时使用不同的GPU加载时会报错。

解决方法

gpu之间的相互转换。即,将训练时的gpu卡转换为加载时的gpu卡。

torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'}) # gpu 1 --> gpu 0

当然,你也可以直接将加载模型时使用的gpu卡改为和训练时的一样。但在多人使用一个服务器时,你想用的gpu卡已被使用,就需按上面方法转换gpu。

拓展

cpu --> cpu 或 gpu --> gpu

checkpoint = torch.load('modelparameters.pth')
model.load_state_dict(checkpoint)

cpu --> gpu 0

torch.load('modelparameters.pth', map_location=lambda storage, loc: storage.cuda(0))

gpu --> cpu

torch.load('modelparameters.pth', map_location=lambda storage, loc: storage)

gpu 1 --> gpu 0

torch.load('modelparameters.pth', map_location={'cuda:1':'cuda:0'})

补充知识:pytorch model.cuda()花费时间很长

如果pytorch在进行model.cuda()操作需要花费的时间很长,长到你怀疑GPU的速度了,那就是不正常的。

如果你用的pytorch版本是0.3.0,升级到0.3.1就好了!

以上这篇pytorch模型载入之gpu和cpu互转操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
django 创建过滤器的实例详解
Aug 14 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
Python如何把十进制数转换成ip地址
May 25 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
基于pandas向csv添加新的行和列
May 25 #Python
Python如何把十进制数转换成ip地址
May 25 #Python
tensorflow模型转ncnn的操作方式
May 25 #Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 #Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
May 25 #Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 #Python
tensorflow pb to tflite 精度下降详解
May 25 #Python
You might like
php实现的用户查询类实例
2015/06/18 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python subprocess模块详细解读
2018/01/29 Python
基于python log取对数详解
2018/06/08 Python
深入了解Python 变量作用域
2020/07/24 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
学校运动会开幕演讲稿
2014/01/04 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技