PyTorch学习(2):torch.device

1. 简述

torch.device 是 PyTorch 中的一个类,它指定了张量(Tensor)和模型应该运行在哪个设备上。在深度学习中,通常会使用 GPU 来加速计算,而 torch.device 允许你轻松地在 CPU 和 GPU 之间切换。

torch.device代表将torch.Tensor分配到的设备的对象。

torch.device包含一个设备类型('cpu'或'cuda'设备类型)和可选的设备的序号。如果设备序号不存在,则为当前设备;
例如,torch.Tensor用设备构建'cuda'的结果等同于'cuda:X',其中X是torch.cuda.current_device()的结果。

torch.Tensor的设备可以通过Tensor.device访问属性。

在使用torch.device之前,你需要了解当前系统上可用的设备。可以使用 torch.cuda.device_count() 来获取系统上 GPU 的数量。如果系统没有 GPU,这个函数会返回 0。

import torch
''' 获取 GPU 的数量 '''
gpu_count=torch.cuda.device_count()print(f"Number of GPUs available: {gpu_count}")

2. 构造

(1)通过字符串构造设备

torch.device('cpu') 

torch.device('cuda')  # current cuda devicedevice(type='cuda')

(2)通过字符串+序号构造设备

torch.device('cuda', 0),device(type='cuda', index=0)

torch.device('cpu', 0),device(type='cpu', index=0)

(3)可直接使用字符串构建

torch.device函数中的参数通常可以用一个字符串替代。这允许使用代码快速构建原型。

cuda1 = torch.device('cuda:1')

torch.randn((2,3), device=cuda1)

torch.randn((2,3), 'cuda:1')

两种方法等同

(4)有cuda的也可直接输入序号

出于传统原因,可以通过单个设备序号构建设备,将其视为cuda设备。这匹配Tensor.get_device(),它为cuda张量返回一个序数,并且不支持cpu张量。

torch.device(1)

# device(type='cuda', index=1)

(5)创建Tensor时直接指定设备

指定设备的方法可以使用(properly formatted)字符串或(legacy)整数型设备序数,即以下示例均等效:

torch.randn((2,3), device=torch.device('cuda:1'))

torch.randn((2,3), device='cuda:1')

torch.randn((2,3), device=1)  # legacy

3. 使用CPU

可直接使用CPU进行训练,此时torch.device指定CPU。

# 创建一个在 CPU 上运行的设备对象

device = torch.device("cpu")

# 创建一个张量并将其移动到 CPU

tensor_on_cpu = torch.randn(2, 2, device=device)

# 确保张量确实在 CPU 上

print(tensor_on_cpu.device == torch.device("cpu"))

4. 使用GPU

在有GPU的设备上,我们一般使用GPU来加速运算。

# 检查是否有可用的 GPU

if torch.cuda.is_available():

    # 获取第一个 GPU

    device = torch.device("cuda", 0)  # 你可以根据需要更改索引

    # 创建一个张量并将其移动到 GPU

    tensor_on_gpu = torch.randn(2, 2, device=device)

    # 确保张量确实在 GPU 上

    print(tensor_on_gpu.device == torch.device("cuda:0"))

5. 在CPU和GPU之间进行数据的互转

# 创建一个在 CPU 上的张量

tensor_on_cpu = torch.randn(2, 2)

# 将张量移动到 GPU

tensor_on_gpu = tensor_on_cpu.to(device)

# 再将张量移回 CPU

tensor_on_cpu = tensor_on_gpu.to("cpu")

6. 设置默认设备

通常情况下,为了便利,我们可以在工程开头指定默认设备,这样一来,接下来所有的Tensor都会默认使用这个设备。

# 设置默认的 GPU 设备

torch.cuda.set_device(0)


# 现在,所有新创建的张量都会默认在 GPU 上

default_tensor_on_gpu = torch.randn(2, 2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/499067.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云计算——大模型应用发展的“理想支点”

在数字化浪潮中,人工智能技术的突飞猛进为千行百业带来了前所未有的转型机遇。近期出现的Sora模型能够根据文本描述生成高质量的视频内容,为多领域带来大模型技术飞跃的冲击。如何推进大模型应用,已成为各行业面临的重要课题之一。 打造硬核…

亚信安慧AntDB数据库分布式架构剖析之snapshot sender进程

本文主要介绍亚信安慧AntDB数据库的分布式架构下的特有进程之snapshot sender进程的设计,与snapshot receiver进程是一对,也是分布式架构的核心进程之一。 进程简介 与Snapshot Receiver进程相对应,该进程的作用从整体上看也只包含两个方面&a…

Shopee 4月市场趋势及选品分析,shopee虾皮品类爆款预测

废话不多说,马上进入本周Shopee“现象爆品”、“热门爆品趋势”及“热搜词周榜"版块,帮助商家及时了解Shopee最新市场现状,掌握选品趋势。 1 现象爆品 近几来,为健康“买单”,已经成为全年龄层群体的“刚需”。 图…

第P1周:实现mnist手写数字识别

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 二、我…

青年才俊的聚集地 带你一览DATE 2024会议现场

会议之眼 快讯 第27届欧洲设计、自动化和测试会议(Design, Automation and Test in Europe Conference )已于2024 年 3 月 25 日-27日在西班牙瓦伦西亚圆满举办!DATE第一届会议是在 1998 年在法国巴黎召开的。从那时起,DATE 会议…

ICLR 2024 | FeatUp: A Model-Agnostic Framework for Features at Any Resolution

论文:https://arxiv.org/abs/2403.10516代码:https://github.com/mhamilton723/FeatUp 背景动机 深层特征是计算机视觉研究的基石,捕获图像语义并使社区即使在零或少样本情况下也能解决下游任务。然而,这些特征通常缺乏空间分辨率…

俄罗斯深陷芯片自主困境,良率仅5成 |百能云芯

俄罗斯的芯片产业一直以来都面临着诸多挑战,尤其是在当前的国际形势下,这些挑战更加凸显。随着俄乌冲突的爆发,西方国家对俄罗斯实施了一系列经济制裁,导致俄罗斯科技产业受到了严重影响。据了解,俄国最大的本土芯片厂…

vue3使用vuedraggable实现拖拽(有过渡)

1. 安装与使用 vue中vuedraggable安装: pnpm i -S vuedraggablenext或者 yarn add vuedraggablenext注意:vue2和vue3安装的是不同版本的vuedraggable,写法上也会有一些区别。 比如在vue3中使用拖拽,要以插槽的方式,…

C# 操作 Word 全域查找且替换(含图片对象)

目录 关于全域查找且替换 Word应用样本 SqlServer数据表部分设计样本 范例运行环境 配置Office DCOM 设计实现 组件库引入 实现原理 查找且替换的核心代码 窗格内容 页眉内容 页脚内容 形状内容 小结 关于全域查找且替换 C#全域操作 Word 查找且替换主要包括如下…

GK7205V500国科微 GK7205RNCFV500 GOKE

GK7205V300 芯片是国科针对 IPC 市场推出的新一代支持 H.265 编码的低功耗 IPC SOC 芯片。 该芯片集成专用的 ISP,拥有高效的视频编码处理性能,支持 H.265 编码,满足客户各种差异化业务需求。集 成了 RTC、POR、Audio codec 以及丰富的外设…

大话设计模式之策略模式

策略模式是一种行为设计模式,它允许在运行时选择算法的行为。这种模式定义了一族算法,将每个算法都封装起来,并且使它们之间可以互相替换。 在策略模式中,一个类的行为或其算法可以在运行时改变。这种模式包含以下角色&#xff1…

Elasticsearch:语义搜索即服务处于卓越搜索的中心

作者:来自 Elastic Sherry Ger, Stephen Brown 对于许多企业来说,搜索卓越中心(center of excellence - COE)向其用户提供搜索服务,从不同的数据源中整理知识,并将搜索功能集成到其内部和外部应用程序中。…

Tensorflow2.0笔记 - metrics做损失和准确度信息度量

本笔记主要记录metrics相关的内容,详细内容请参考代码注释,代码本身只使用了Accuracy和Mean。本节的代码基于上篇笔记FashionMnist的代码经过简单修改而来,上篇笔记链接如下: Tensorflow2.0笔记 - FashionMnist数据集训练-CSDN博…

AI 异构计算机设计方案:902-基于6U VPX 高带宽PCIe的GPU AI 异构计算机

基于6U VPX 高带宽PCIe的GPU AI 异构计算机 一、产品概述 基于6U 6槽 VPX 高带宽PCIe的GPU AI 异构计算机以PCIe总线为架构,通过高带宽的PCIe互联,实现主控计算板、GPU AI板卡,FPGA接口板,存储板的PCIe高带宽互联访问&…

揭秘百度百科审核内幕,百科词条审核究竟需要多久?

百度百科作为国内最大的网络百科全书平台之一,致力于提供全面、准确的知识服务,同时也承担着审核百科词条的工作。在互联网时代,人们对信息的需求日益增长,因此百度百科的审核工作显得尤为重要。那么,百度百科词条审核…

152 Linux C++ 通讯架构实战7 ,makefile编写改成for cpp,读配置文件,内存泄漏查找,设置标题实战

读写配置文件代码实战。nginx.conf 一个项目要启动,需要配置很多信息,第一项就是学习如何配置一个项目 nginx.conf的内容 #是注释行, #每个有效配置项用 等号 处理,等号前不超过40个字符,等号后不超过400个字符&#…

虚幻引擎资源加密方案解析

前段时间,全球游戏开发者大会(Game Developers Conference,简称GDC)在旧金山圆满落幕,会议提供了多份值得参考的数据报告。根据 GDC 调研数据,当下游戏市场中,Unreal Engine (下文简称虚幻)和 Unity 是使用最多的游戏引…

Qlib-Server:量化库数据服务器

Qlib-Server:量化库数据服务器 介绍 Qlib-Server 是 Qlib 的配套服务器系统,它利用 Qlib 进行基本计算,并提供广泛的服务器系统和缓存机制。通过 Qlib-Server,可以以集中的方式管理 Qlib 提供的数据。 框架 Qlib 的客户端/服务器框架基于 WebSocket 构建,这是因为 WebS…

js动态设置页面高度

准备一个div <div class"card-edit"><!-- 业务需求 --> </div>开始操作 // 获取页面的中需要设置高度的元素 如&#xff1a;card-editconst autoStyle document.getElementsByClassName(card-edit)[0]// 根据业务需求做判断// 此处设定&#…

DC电源模块的设计与制造流程

BOSHIDA DC电源模块的设计与制造流程 DC电源模块是一种用于将交流电转换为直流电的设备。它广泛应用于各种电子设备中&#xff0c;如电子产品、工业仪器、电视等。下面是DC电源模块的设计与制造流程的简要描述&#xff1a; 1. 需求分析&#xff1a;在设计DC电源模块之前&#…
最新文章