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 相关文章推荐
使用pdb模块调试Python程序实例
Jun 02 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
python+flask实现API的方法
Nov 21 Python
python中时间模块的基本使用教程
May 14 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
解决Django Haystack全文检索为空的问题
May 19 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 Python
十个Python自动化常用操作,即拿即用
May 10 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的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
php制作文本式留言板
2015/03/18 PHP
php查询内存信息操作示例
2019/05/09 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
详解Javascript中的Object对象
2016/02/28 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python金融数据可视化汇总
2017/11/17 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
python装饰器代码深入讲解
2021/03/01 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
大三学生入党思想汇报
2014/01/02 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
赡养老人协议书范本
2015/08/06 职场文书
手残删除python之后的补救方法
2021/06/26 Python