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实现CET查分的方法
Mar 10 Python
在Python中使用__slots__方法的详细教程
Apr 28 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
django站点管理详解
Dec 12 Python
python的Tqdm模块的使用
Jan 10 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
python基于openpyxl生成excel文件
Dec 23 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
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
PHP修改session_id示例代码
2014/01/08 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
2018/05/28 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
Python日志模块logging简介
2015/04/13 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
python性能测试工具locust的使用
2020/12/28 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
结婚喜宴家长答谢词
2014/01/15 职场文书
新年联欢会主持词
2014/03/27 职场文书
职务聘任书范文
2014/03/29 职场文书
感恩寄语大全
2014/04/11 职场文书
工厂车间标语
2014/06/19 职场文书
三问三解心得体会
2014/09/05 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
Python3 如何开启自带http服务
2021/05/18 Python
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL