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 相关文章推荐
天翼开放平台免费短信验证码接口使用实例
Dec 18 Python
跟老齐学Python之list和str比较
Sep 20 Python
在Docker上部署Python的Flask框架的教程
Apr 08 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
python对离散变量的one-hot编码方法
Jul 11 Python
python requests.post带head和body的实例
Jan 02 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
python实现从ftp上下载文件的实例方法
Jul 19 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
php2html php生成静态页函数
2008/12/08 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
php计算十二星座的函数代码
2012/08/21 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python匹配中文的正则表达式
2016/05/11 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
大学生工作推荐信范文
2013/12/02 职场文书
党校培训思想汇报
2014/01/03 职场文书
食品安全检查制度
2014/02/03 职场文书
教师节宣传方案
2014/05/23 职场文书
节约用水的口号
2014/06/20 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
纪委立案决定书
2015/06/24 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
安全生产感想
2015/08/07 职场文书