返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/402803.html(转载时请注明来源链接)

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

猜你喜欢
  • 【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
  • SQL如何实现横表与纵表相互转换
    目录一、横表简单概述二、纵表简单概述三、纵表转横表代码如下以及视图展示四、横表转纵表代码如下以及视图展示五、横表、纵表优点与缺点六、总结一、横表简单概述 横表是普通的建表方式。例如:表结构为主键、字段1、字段2、字段3&...
    99+
    2023-04-24
    SQL 横表与纵表转换 SQL 横表与纵表
  • 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 相互转换
  • 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
  • 如何使用JAXBContext实现Java和xml的互相转换
    这篇文章主要介绍了如何使用JAXBContext实现Java和xml的互相转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JAXBContext实现Java和xml的互相转...
    99+
    2023-06-20
  • 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
  • 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转换
  • java中JSONArray互相转换List的实现
    目录1:JSONArray转List2:List转JSONArray1:JSONArray转List JSONArray字符串 转 List //初始化JSONArray JSONA...
    99+
    2024-04-02
  • ESM与CJS互相转换怎么实现
    本篇内容介绍了“ESM与CJS互相转换怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文ESM 和 CJS 是我们常用的模块格式,两...
    99+
    2023-07-05
  • 实体类和xml文件如何相互转换
    这篇文章给大家分享的是有关实体类和xml文件如何相互转换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体代码如下:package com.pcq.entity; i...
    99+
    2024-04-02
  • Python PyMuPDF如何实现PDF与图片和PPT相互转换
    这篇文章主要介绍了Python PyMuPDF如何实现PDF与图片和PPT相互转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python PyMuPDF如何实现PDF与图片和PPT相互转...
    99+
    2023-07-04
  • C#实现实体类和XML的相互转换
    一、实体类转换成XML 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化 public static string XmlSerial...
    99+
    2024-04-02
  • TypeScript实现数组和树的相互转换
    目录前言数组转换为树树转换为数组总结这段时间重新捡起了数据结构和算法,发现里面的树和图是真的掉头发。本文基于一个面试题,详细分析如何实现数组和树的相互转换。 前言 树或者图是个比较抽...
    99+
    2024-04-02
  • C#怎么实现Array,List,Dictionary相互转换
    这篇文章主要介绍“C#怎么实现Array,List,Dictionary相互转换”,在日常操作中,相信很多人在C#怎么实现Array,List,Dictionary相互转换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作