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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
Python 寻找局部最高点的实现
Dec 05 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python日志syslog使用原理详解
Feb 18 Python
什么是python的必选参数
Jun 21 Python
Python实现手势识别
Oct 21 Python
Django多数据库联用实现方法解析
Nov 12 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
Django项目在pycharm新建的步骤方法
Mar 02 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
第十二节--类的自动加载
2006/11/16 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
js查找父节点的简单方法
2008/06/28 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python常用函数详解
2016/09/13 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
用Python逐行分析文件方法
2019/01/28 Python
Pytorch之保存读取模型实例
2019/12/30 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
三星法国官方网站:Samsung法国
2019/10/31 全球购物
标准导师推荐信(医学类)
2013/10/28 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
走群众路线学习笔记
2014/11/06 职场文书
亲戚关系证明
2015/06/24 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书