我是靠谱客的博主 大胆泥猴桃,最近开发中收集的这篇文章主要介绍pytorch如何将用GPU训练好的网络模型用到CPU中,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文参考链接地址:
1.https://blog.csdn.net/bc521bc/article/details/85623515
2.https://www.ptorch.com/news/74.html

刚开始用python 小小小菜鸟一枚,啥也不会,在GitHub上下载了代码,运行后错误百出,陷入了深深的绝望之中。无奈只好一点点的差,一点点的改。

这篇文章简单记一下:如何将用GPU训练好的网络模型用到CPU中
源代码如下:

        feature_encoder.load_state_dict(torch.load(str("./models/miniimagenet_feature_encoder_" + str(CLASS_NUM) +"way_" + str(SAMPLE_NUM_PER_CLASS) +"shot.pkl")))       

在没有GPU的电脑上运行,报错如下:

        RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.       

我做的更改如下:

        feature_encoder.load_state_dict(torch.load(str("./models/miniimagenet_feature_encoder_" + str(CLASS_NUM) +"way_" + str(SAMPLE_NUM_PER_CLASS) +"shot.pkl"),map_location=lambda storage, loc: storage))

改完后,目前还没发现其他错误。
主要是因为我也还没有运行到最后,我还得一点点再看看,希望我改对了[捂脸笑]

最后,记录下cpu和GPU间相互转换的方法:

gpu→ cpu

torch.load('parameters.pth', map_location=lambda storage, loc: storage)

cpu—>gpu 1

torch.load('parameters.pth', map_location=lambda storage, loc: storage.cuda(1))

gpu1—>gpu0

torch.load('parameters.pth', map_location={'cuda:1':'cuda:0'})

最后,同类之间,也就是cpu—>cpu或者gpu—>gpu:

checkpoint = torch.load(‘parameters.pth’)

不对的地方,还请各位大神多多指教哦!!!

最后

以上就是大胆泥猴桃为你收集整理的pytorch如何将用GPU训练好的网络模型用到CPU中的全部内容,希望文章能够帮你解决pytorch如何将用GPU训练好的网络模型用到CPU中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部