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字典几种方法总结(推荐)
Sep 11 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
python2 与 python3 实现共存的方法
Jul 12 Python
详解python配置虚拟环境
Apr 08 Python
对python中UDP,socket的使用详解
Aug 22 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
python 字符串格式化的示例
Sep 21 Python
深入解析NumPy中的Broadcasting广播机制
May 30 Python
用Python可视化新冠疫情数据
Jan 18 Python
Python sklearn分类决策树方法详解
Sep 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
使用php实现从身份证中提取生日
2016/05/09 PHP
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
jquery map方法使用示例
2014/04/23 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python with语句的原理与用法详解
2020/03/30 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
高级技校毕业生自荐信
2013/11/18 职场文书
50岁生日感言
2014/01/23 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
师范生见习报告
2014/10/31 职场文书
小学教育见习报告
2014/10/31 职场文书
小学毕业感言200字
2015/07/30 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python