iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【PyTorch如何实现CPU、GPU相互转换?】
  • 442
分享到

【PyTorch如何实现CPU、GPU相互转换?】

pytorch深度学习python人工智能 2023-09-11 06:09:12 442人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

拒绝CPU,PyTorch如何切换GPU计算? 问题的提出1.CPU_to_GPU——定义device对象2.CPU_to_GPU——.cuda()方法3.GPU_to_CPU——.cpuEn

拒绝CPU,PyTorch如何切换GPU计算?

问题的提出

写代码时非常困惑,明明下载了cuda支持包和PyTorch-GPU版本,进行NN和CNN时却是用CPU在进行计算(CPU利用率超90%,GPU利用率不到5%),如下图:
在这里插入图片描述
首先我检查了PyTorch是否安装成功,输入命令print(torch.cuda.is_available()),返回值为True,说明PyTorch是安装成功了,这可让我有点捉急。

看了许多文章终于解决了深度学习时CPU和GPU之间切换的问题,以下是一些总结

1.CPU_to_GPU——定义device对象

深度学习前,可以调用torch.device函数定义当前设备,如要使用GPU计算 输入‘cuda’,使用CPU计算则输入‘cpu’。

为了以防万一,加上if判断语句,利用torch.cuda.is_available()对当前环境是否成功安装GPU版本的Pytorch进行判断,如果成功安装则选择GPU进行计算,否则CPU,代码如下:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

反之,也可GPU_to_CPU。

如果成功安装GPU版本的Pytorch,返回值为True,相反为False。接下来,需要使用Tensor.to(device)方法进行切换操作:

  • 将Tensor数据转入GPU:
x_train,y_train,x_valid,y_valid = map(torch.tensor,(x_train,y_train,x_valid,y_valid))x_train = x_train.to(device)y_train = y_train.to(device)x_valid = x_valid.to(device)y_valid = y_valid.to(device)
  • 别忘了将model也转入GPU:
model = model.to(device)

2.CPU_to_GPU——.cuda()方法

我们可以直接使用Tensor.cuda()方法将张量用GPU调用

# 数据用GPU调用data = data.cuda()target = target.cuda()# 将model用GPU调用net = CNN()net = net.cuda()

3.GPU_to_CPU——.cpu

结束GPU计算后,需要转换回CPU调用模式才能进行相应的数值numpy计算,否则有可能报错,切换格式为Tensor.cpu()。

print(100. * train_r[0].cpu().numpy() / train_r[1])

End

问题就解决了:
在这里插入图片描述

补充:

尽量直接避免使用data.cuda() ,可能会报错,建议使用data = data.cuda()

来源地址:https://blog.csdn.net/fly_ddaa/article/details/129999425

--结束END--

本文标题: 【PyTorch如何实现CPU、GPU相互转换?】

本文链接: https://www.lsjlt.com/news/402803.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【PyTorch如何实现CPU、GPU相互转换?】
    拒绝CPU,PyTorch如何切换GPU计算? 问题的提出1.CPU_to_GPU——定义device对象2.CPU_to_GPU——.cuda()方法3.GPU_to_CPU——.cpuEn...
    99+
    2023-09-11
    pytorch 深度学习 python 人工智能
  • 浅谈tensorflow与pytorch的相互转换
    目录1.变量预定义2.创建变量并初始化3.语句执行4.tensor5.其他函数本文以一段代码为例,简单介绍一下tensorflow与pytorch的相互转换(主要是tensorflo...
    99+
    2024-04-02
  • 如何用ADO.NET实现txt与Excel的互相转换
    本篇文章为大家展示了如何用ADO.NET实现txt与Excel的互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在园子里看过很多文章,关于设计模式,关于架构等等,我在这里谈谈一些软件的功能,为...
    99+
    2023-06-17
  • Java BeanMap如何实现Bean与Map的相互转换
    本篇内容主要讲解“Java BeanMap如何实现Bean与Map的相互转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java BeanMap如何实现Bean与Map的相...
    99+
    2023-07-04
  • C#实现Array,List,Dictionary相互转换
    一、代码实例实现功能 将Array转换为List将List转换为Array将Array转换为Dictionary将Dictionary转换为Array将List转换为Dictiona...
    99+
    2024-04-02
  • Tensor和NumPy相互转换的实现
    目录1. Tensor 转 NumPy2. NumPy 数组转 Tensor3. torch.tensor() 将 NumPy 数组转换成 Tensor我们很容易用numpy()和f...
    99+
    2023-02-10
    Tensor NumPy转换 Tensor NumPy 相互转换
  • SQL如何实现横表与纵表相互转换
    目录一、横表简单概述二、纵表简单概述三、纵表转横表代码如下以及视图展示四、横表转纵表代码如下以及视图展示五、横表、纵表优点与缺点六、总结一、横表简单概述 横表是普通的建表方式。例如:表结构为主键、字段1、字段2、字段3&...
    99+
    2023-04-24
    SQL 横表与纵表转换 SQL 横表与纵表
  • Pytorch中实现CPU和GPU之间的切换的两种方法
    目录方法一:.to(device)1.不知道电脑GPU可不可用时:2.指定GPU时3.指定cpu时:方法二:总结:如何在pytorch中指定CPU和GPU进行训练,以及cpu和gpu...
    99+
    2023-01-28
    Pytorch CPU和GPU切换 Pytorch CPU GPU
  • java项目中如何实现集合的相互转换
    这篇文章给大家介绍java项目中如何实现集合的相互转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.List转换为ArrayList<String> list = new ArrayList<St...
    99+
    2023-05-31
    java 集合转换 相互
  • python中CURL和python requests的相互转换如何实现
    今天小编给大家分享一下python中CURL和python requests的相互转换如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,...
    99+
    2023-07-05
  • ESM与CJS互相转换怎么实现
    本篇内容介绍了“ESM与CJS互相转换怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文ESM 和 CJS 是我们常用的模块格式,两...
    99+
    2023-07-05
  • 如何使用JAXBContext实现Java和xml的互相转换
    这篇文章主要介绍了如何使用JAXBContext实现Java和xml的互相转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JAXBContext实现Java和xml的互相转...
    99+
    2023-06-20
  • java中JSONArray互相转换List的实现
    目录1:JSONArray转List2:List转JSONArray1:JSONArray转List JSONArray字符串 转 List //初始化JSONArray JSONA...
    99+
    2024-04-02
  • Canvas与Image怎么实现互相转换
    这篇文章将为大家详细讲解有关Canvas与Image怎么实现互相转换,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。转换 Image为 Canvas 要把图片...
    99+
    2024-04-02
  • JavaBeanMap实现Bean与Map的相互转换
    目录bean转Mapmap转BeanbeanMap实现以及高性能的原因net.sf.cglib.beans.BeanMap用法 bean转Map @Data public class...
    99+
    2022-11-21
    BeanMap Bean与Map的相互转换 BeanMap Bean与Map转换
  • Python PyMuPDF如何实现PDF与图片和PPT相互转换
    这篇文章主要介绍了Python PyMuPDF如何实现PDF与图片和PPT相互转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python PyMuPDF如何实现PDF与图片和PPT相互转...
    99+
    2023-07-04
  • 实体类和xml文件如何相互转换
    这篇文章给大家分享的是有关实体类和xml文件如何相互转换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体代码如下:package com.pcq.entity; i...
    99+
    2024-04-02
  • python中CURL和pythonrequests的相互转换实现
    目录将 curl 转换为 Python requests将 Python 请求转换为 curlcurl 和 Python requests 都是发送 HTTP 请求的强大工具。 虽然...
    99+
    2023-03-14
    python中CURL requests相互转换 python CURL 转换 requests
  • C#实现实体类和XML的相互转换
    一、实体类转换成XML 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化 public static string XmlSerial...
    99+
    2024-04-02
  • C#怎么实现Array,List,Dictionary相互转换
    这篇文章主要介绍“C#怎么实现Array,List,Dictionary相互转换”,在日常操作中,相信很多人在C#怎么实现Array,List,Dictionary相互转换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作