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中copy()方法的使用
May 21 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
老生常谈python的私有公有属性(必看篇)
Jun 09 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
python定时关机小脚本
Jun 20 Python
使用Python对微信好友进行数据分析
Jun 27 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
Python实战之实现康威生命游戏
Apr 26 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读取txt文本文件并分页显示的方法
2015/03/11 PHP
Netbeans 8.2与PHP相关的新特性介绍
2016/10/08 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
pyside写ui界面入门示例
2014/01/22 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
pandas 时间格式转换的实现
2019/07/06 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
如何卸载python插件
2020/07/08 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
大学生军训自我鉴定
2014/02/12 职场文书
公司委托书范本5篇
2014/09/20 职场文书
水电施工员岗位职责
2015/04/11 职场文书
校车安全管理责任书
2015/05/11 职场文书