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 文件重命名工具代码
Jul 26 Python
Python中使用动态变量名的方法
May 06 Python
python根据日期返回星期几的方法
Jul 06 Python
python编程开发之textwrap文本样式处理技巧
Nov 13 Python
使用Python对SQLite数据库操作
Apr 06 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
Keras 使用 Lambda层详解
Jun 10 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 12 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
农民和部队如何穿矿
2020/03/04 星际争霸
TMDPHP 模板引擎使用教程
2012/03/13 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
python数据结构之列表和元组的详解
2017/09/23 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
创先争优活动方案
2014/02/12 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js