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常规方法实现数组的全排列
Mar 17 Python
python写入已存在的excel数据实例
May 03 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
详解python pandas 分组统计的方法
Jul 30 Python
python实现BP神经网络回归预测模型
Aug 09 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
python和opencv构建运动检测器的实现
Mar 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
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
vue实现登录拦截
2020/06/29 Javascript
Python中用sleep()方法操作时间的教程
2015/05/22 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
Footshop法国:购买运动鞋
2020/01/19 全球购物
会计电算化应届生自荐信
2014/02/25 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
会计专业自荐信
2014/06/03 职场文书
妈妈活动方案
2014/08/15 职场文书
2014年村委会工作总结
2014/11/24 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
VUE递归树形实现多级列表
2022/07/15 Vue.js