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 相关文章推荐
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
Python json 错误xx is not JSON serializable解决办法
Mar 15 Python
Python实现翻转数组功能示例
Jan 12 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
OpenCV图像颜色反转算法详解
May 13 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
pandas 如何分割字符的实现方法
Jul 29 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
Python ini文件常用操作方法解析
Apr 26 Python
Python 如何展开嵌套的序列
Aug 01 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
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php简单获取目录列表的方法
2015/03/24 PHP
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
Vue.js+cube-ui(Scroll组件)实现类似头条效果的横向滚动导航条
2019/06/24 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Pandas 按索引合并数据集的方法
2018/11/15 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
C#中的验证控件有几种
2014/03/08 面试题
医学专业个人求职自荐信格式
2013/09/23 职场文书
物流经理自我评价
2013/09/23 职场文书
生产部岗位职责范文
2014/02/07 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
七年级生物教学反思
2016/02/20 职场文书