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实现html转ubb代码(html2ubb)
Jul 03 Python
Python实现Windows上气泡提醒效果的方法
Jun 03 Python
Python遍历目录并批量更换文件名和目录名的方法
Sep 19 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
python使用多线程+socket实现端口扫描
May 28 Python
python实现磁盘日志清理的示例
Nov 05 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 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
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
jquery禁用右键示例
2014/04/28 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
Python贪心算法实例小结
2018/04/22 Python
python检索特定内容的文本文件实例
2018/06/05 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
pandas.cut具体使用总结
2019/06/24 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
opencv实现图像平移效果
2021/03/24 Python
公司离职证明范本
2014/01/13 职场文书
给同学的道歉信
2014/01/16 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
计划生育标语
2014/06/23 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js