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中max函数用法实例分析
Jul 17 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
python K近邻算法的kd树实现
Sep 06 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
django使用admin站点上传图片的实例
Jul 28 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
深入理解Pytorch微调torchvision模型
Nov 11 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
IIS6的PHP最佳配置方法
2007/03/19 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
通过js修改input、select默认字体颜色
2017/04/19 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
教学改革实施方案
2014/03/31 职场文书
同居协议书范本
2014/04/23 职场文书
学校清明节活动总结
2014/07/04 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
2015年新农合工作总结
2015/03/30 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL