pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作

 更新时间:2020年05月25日 15:50:59   作者:洞幺01  
这篇文章主要介绍了pytorch模型载入之gpu和cpu互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题描述

有时在加载已训练好的模型时,会出现 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中Merge使用的示例详解

    Python中Merge使用的示例详解

    Python里的merger函数是数据分析工作中最常见的函数之一,类似于MySQL中的join函数和Excel中的vlookup函数。本文将通过一些简单的实力和大家聊聊Merge的使用,需要的可以了解一下
    2023-02-02
  • Django数据映射(一对一,一对多,多对多)

    Django数据映射(一对一,一对多,多对多)

    本文主要介绍了Django数据映射(一对一,一对多,多对多),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python使用pyexecjs代码案例解析

    Python使用pyexecjs代码案例解析

    这篇文章主要介绍了Python使用pyexecjs代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 使用Pytorch训练two-head网络的操作

    使用Pytorch训练two-head网络的操作

    这篇文章主要介绍了使用Pytorch训练two-head网络的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python实现Tab自动补全和历史命令管理的方法

    Python实现Tab自动补全和历史命令管理的方法

    这篇文章主要介绍了Python实现Tab自动补全和历史命令管理的方法,实例分析了tab自动补全的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python range实例用法分享

    python range实例用法分享

    在本篇文章里小编给大家整理了关于python range实例用法,有需要的朋友们可以学习参考下
    2020-02-02
  • pyqt 实现为长内容添加滑轮 scrollArea

    pyqt 实现为长内容添加滑轮 scrollArea

    今天小编就为大家分享一篇pyqt 实现为长内容添加滑轮 scrollArea,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python中类的属性和方法介绍

    python中类的属性和方法介绍

    在本篇内容里小编给大家整理了关于python中类的属性知识点以及使用方法介绍,需要的朋友们参考下。
    2018-11-11
  • python中yield的用法详解

    python中yield的用法详解

    这篇文章主要介绍了python中yield的用法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Python数据分析之分析千万级淘宝数据

    Python数据分析之分析千万级淘宝数据

    网购已经成为人们生活不可或缺的一部分,本次项目基于淘宝app平台数据,通过相关指标对用户行为进行分析,从而探索用户相关行为模式。感兴趣的可以学习一下
    2022-03-03

最新评论