介绍PyTorch张量

介绍PyTorch张量

介绍PyTorch张量

PyTorch张量是我们在PyTorch中编程神经网络时将使用的数据结构。

在编程神经网络时,数据预处理通常是整个过程的第一步,数据预处理的一个目标是将原始输入数据转换为张量形式。

torch.Tensor​类的实例

PyTorch张量是torch.Tensor​ Python类的实例。我们可以使用类构造函数创建一个torch.Tensor​对象,如下所示:

> t = torch.Tensor()
> type(t)
torch.Tensor

这创建了一个空张量(没有数据的张量),但我们很快就会添加数据。

张量属性

首先,让我们看看一些张量属性。每个torch.Tensor​都有这些属性:

  • torch.dtype
  • torch.device
  • torch.layout

查看我们的张量t​,我们可以看到以下默认属性值:

> print(t.dtype)
> print(t.device)
> print(t.layout)
torch.float32
cpu
torch.strided
张量具有torch.dtype

dtype​,在我们的例子中是torch.float32​,指定了张量中包含的数据类型。张量包含统一(相同类型)的数值数据,类型如下:

数据类型dtypeCPU张量GPU张量
32位浮点数torch.float32torch.FloatTensortorch.cuda.FloatTensor
64位浮点数torch.float64torch.DoubleTensortorch.cuda.DoubleTensor
16位浮点数torch.float16torch.HalfTensortorch.cuda.HalfTensor
8位整数(无符号)torch.uint8torch.ByteTensortorch.cuda.ByteTensor
8位整数(有符号)torch.int8torch.CharTensortorch.cuda.CharTensor
16位整数(有符号)torch.int16torch.ShortTensortorch.cuda.ShortTensor
32位整数(有符号)torch.int32torch.IntTensortorch.cuda.IntTensor
64位整数(有符号)torch.int64torch.LongTensortorch.cuda.LongTensor

注意每种类型都有CPU和GPU版本。关于张量数据类型的一点需要注意,张量之间的张量操作必须在具有相同数据类型的张量之间进行。然而,这个声明只适用于PyTorch版本低于1.3​。有关详细信息,请参阅下面的_PyTorch张量类型提升_部分。

PyTorch张量类型提升

从PyTorch版本1.3​开始,算术和比较操作可以执行混合类型操作,这些操作提升为共同的dtype​。

下面的例子在版本1.2​中是不允许的。然而,在版本1.3​及以上,相同的代码返回一个dtype=torch.float32​的张量。

torch.tensor([1], dtype=torch.int) +
torch.tensor([1], dtype=torch.float32)

有关更多详细信息,请参阅完整文档。

  • torch.result_type​ 提供函数以确定混合类型操作的结果
  • torch.can_cast​ 公开类型提升的转换规则
  • torch.promote_types​ 公开提升逻辑
张量具有torch.device

设备,在我们的例子中是cpu​,指定了张量数据分配的设备(CPU或GPU)。这决定了给定张量的张量计算将在哪里执行。

PyTorch支持使用多个设备,它们使用索引指定:

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

如果我们有这样的设备,我们可以通过将设备传递给张量的构造函数来在设备上创建张量。关于使用多个设备的一点需要注意,张量之间的张量操作必须在存在于同一设备上的张量之间进行。

使用多个设备通常是我们在成为更高级用户时会做的事情,所以现在不必担心。

张量具有torch.layout

布局,在我们的例子中是strided​,指定了张量如何在内存中存储。要了解更多关于步幅的信息,请点击这里。

目前,这就是我们需要知道的全部。

从张量属性中提取的信息

作为神经网络程序员,我们需要意识到以下几点:

  1. 张量包含统一类型的数据(dtype​)。
  2. 张量之间的张量计算取决于dtype​和device​。

现在,让我们看看在PyTorch中使用数据创建张量的常见方法。

使用数据创建张量

这些是在PyTorch中使用数据(类似数组)创建张量对象(torch.Tensor​类的实例)的主要方法:

  1. torch.Tensor(data)
  2. torch.tensor(data)
  3. torch.as_tensor(data)
  4. torch.from_numpy(data)

让我们看看这些选项。它们都接受某种形式的数据,并给我们一个torch.Tensor​类的实例。有时,当有多种方法可以实现相同的结果时,事情可能会变得混乱,所以让我们来分解一下。

我们将首先使用每个选项创建一个张量,看看我们得到了什么。我们将首先创建一些数据。

我们可以使用Python列表或序列,但numpy.ndarray​将是更常见的选项,所以我们将使用一个numpy.ndarray​,如下所示:

> data = np.array([1,2,3])
> type(data)
numpy.ndarray

这给我们提供了一个类型为numpy.ndarray​的简单数据。

现在,让我们使用这些选项1-4创建我们的张量,并看看我们得到了什么:

> o1 = torch.Tensor(data)
> o2 = torch.tensor(data)
> o3 = torch.as_tensor(data)
> o4 = torch.from_numpy(data)> print(o1)
> print(o2)
> print(o3)
> print(o4)
tensor([1., 2., 3.])
tensor([1, 2, 3], dtype=torch.int32)
tensor([1, 2, 3], dtype=torch.int32)
tensor([1, 2, 3], dtype=torch.int32)

所有选项(o1​,o2​,o3​,o4​)似乎都产生了相同的张量,除了第一个。第一个选项(o1​)在数字后面有点,表示这些数字是float​,而接下来的三个选项类型为int32​。

// Python代码示例,说明我们的意思> type(2.)
float> type(2)
int

在下一篇文章中,我们将更深入地探讨这种差异以及其他一些重要的差异,这些差异隐藏在幕后。

下一篇文章的讨论将使我们能够看到这些选项中哪一个最适合创建张量。目前,让我们看看一些无需任何数据即可创建张量的创建选项。

无需数据的创建选项

以下是一些其他可用的创建选项。

我们有torch.eye()​函数,它返回一个2-D张量,对角线上是1,其他地方是0。eye()​这个名字与单位矩阵的概念有关,单位矩阵是一个方阵,主对角线上是1,其他地方都是0。

> print(torch.eye(2))
tensor([[1., 0.],[0., 1.]
])

我们有torch.zeros()​函数,它创建一个指定形状参数的零张量。

> print(torch.zeros([2,2]))
tensor([[0., 0.],[0., 0.]
])

同样,我们有torch.ones()​函数,它创建一个1的张量。

> print(torch.ones([2,2]))
tensor([[1., 1.],[1., 1.]
])

我们还有torch.rand()​函数,它创建一个指定参数形状的张量,其值是随机的。

> print(torch.rand([2,2]))
tensor([[0.0465, 0.4557],[0.6596, 0.0941]
])

这是不需要数据的可用创建函数的一小部分。查看PyTorch文档以获取完整列表。

我希望现在你对如何使用PyTorch从数据以及不需要数据的内置函数创建张量有了很好的理解。如果我们使用numpy.ndarray​,这个任务将变得轻而易举,所以如果你已经熟悉NumPy,那么恭喜你。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【R安装】R语言的详细安装及环境配置(2024年11月)

目录 R及Rstudio下载R下载Rstudio下载 R及Rstudio安装R安装Rtools 安装Rstudio安装 运行 RStudio通过RStudio配置使用特定的R版本 参考 R及Rstudio下载 R下载 R官网-The R Project for Statistical Computing 点击【download R】,进入下载界面: 选择…

Docker官网安装

1.官网 官方文档 https://www.docker.com/ Docker Hub官网 镜像 https://hub.docker.com/ 2.Docker 的三要素 1、镜像 2、容器 3、仓库 小总结 3.Docker 平台架构图 (架构版本) 4.安装Docker CentOS | Docker Docs 1.确定你是CentOS7及以上版本 …

寒假第一次牛客周赛 Round 76回顾

AC数&#xff1a;2&#xff08;A、C&#xff09; B 思路&#xff1a; 等价于求&#xff1a; 数量最多的字符 #include<stdio.h> int main() {int n,num;int a[26]{0};//用于存储字母 a 到 z 的出现次数。scanf("%d",&n);char s[n];scanf("%s",s)…

GARCH指导的神经网络在金融市场波动性预测中的应用

“GARCH-Informed Neural Networks for Volatility Prediction in Financial Markets” 论文地址&#xff1a;https://arxiv.org/pdf/2410.00288v1 摘要 波动性作为衡量风险的关键指标&#xff0c;广泛应用于金融投资的定价中。GARCH模型及其变体是用于股票波动性预测的传统工…

STM32-笔记43-低功耗

一、什么是低功耗&#xff1f; 低功耗‌是指通过优化设计和采用特定的技术手段&#xff0c;降低电子设备在运行过程中消耗的能量&#xff0c;从而延长电池寿命、提高性能和减少发热。低功耗设计主要从芯片设计和系统设计两个方面进行&#xff0c;旨在减少所有器件的功率损耗&am…

Docker 镜像制作原理 做一个自己的docker镜像

一.手动制作镜像 启动容器进入容器定制基于容器生成镜像 1.启动容器 启动容器之前我们首先要有一个镜像&#xff0c;这个镜像可以是从docker拉取&#xff0c;例如&#xff1a;现在pull一个ubuntu镜像到本机。 docker pull ubuntu:22.04 我们接下来可以基于这个容器进行容器…

【Ubuntu 24.04】虚拟机常见问题解决

1.24开启3D加速黑屏 参考文章&#xff1a;Ubuntu24开机黑屏&#xff0c;VMware卡死&#xff0c;虚拟机繁忙解决方案 没有3D加速就没有动画&#xff0c;所以我们需要开启3D加速&#xff0c;但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常&#xff0c;因此需要更新…

辅助云运维

为客户提供运维支持&#xff0c;保障业务连续性。 文章目录 一、服务范围二、服务内容三、服务流程四、 服务交付件五、责任分工六、 完成标志 一、服务范围 覆盖范围 云产品使用咨询、问题处理、配置指导等&#xff1b; 云产品相关操作的技术指导&#xff1b; 云相关资源日常…

灵活妙想学数学

灵活妙想学数学 题1&#xff1a;海星有几只&#xff1f; 一共有12只海洋生物&#xff0c;分别是5只脚的海星&#xff0c;8只脚的章鱼和10只脚的鱿鱼&#xff0c;这些海洋动物的脚一共有87只&#xff0c;每种生物至少有1只&#xff0c;问海星有几只&#xff1f; 解&#xff1a…

Java中的并发工具类:让多线程编程更轻松

Java中的并发工具类&#xff1a;让多线程编程更轻松 1. 引言&#xff1a;多线程编程的“痛” 多线程编程是Java开发中的一大难点&#xff0c;尤其是在高并发场景下&#xff0c;稍有不慎就会遇到线程安全问题、死锁、性能瓶颈等问题。比如&#xff1a; public class Counter …

Vue3使用vue-count-to数字滚动模块报错解决方案

小伙伴们是不是遇到了vue3项目使用vue-count-to出现报错的问题 报错如下&#xff1a; TypeError: Cannot read properties of undefined (reading _c) 这个错误信息具体是说没读取到_c的属性 具体不清楚是什么原因&#xff0c;排查还得去看源码&#xff0c;所以我们来解决&a…

idea上git log面板的使用

文章目录 各种颜色含义具体的文件的颜色标签颜色&#x1f3f7;️ 节点和路线 各种颜色含义 具体的文件的颜色 红色&#xff1a;表示还没有 git add 提交到暂存区绿色&#xff1a;表示已经 git add 过&#xff0c;但是从来没有 commit 过蓝色&#xff1a;表示文件有过改动 标…

一分钟学习数据安全——数据安全的核心概念CIA以及安当解决方案

数据安全三要素是指保密性&#xff08;Confidentiality&#xff09;、完整性&#xff08;Integrity&#xff09;和可用性&#xff08;Availability&#xff09;&#xff0c;它们是信息安全领域的核心概念&#xff0c;旨在确保信息的安全和可信度。这边文章用一分钟的时间&#…

Electron 开发者的 Tauri 2.0 实战指南:文件系统操作

作为 Electron 开发者&#xff0c;我们习惯了使用 Node.js 的 fs 模块来处理文件操作。在 Tauri 2.0 中&#xff0c;文件系统操作被重新设计&#xff0c;采用了 Rust 的安全特性和权限系统。本文将帮助你理解和重构这部分功能。 文件操作对比 Electron 的文件操作 在 Electr…

1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)

目录 01. Java中的集合体系 02. 单列集合体系​ 1. Collection系列集合的遍历方式 &#xff08;1&#xff09;迭代器遍历&#xff08;2&#xff09;增强for遍历​编辑&#xff08;3&#xff09;Lambda表达式遍历 03.List集合详解 04.Set集合详解 05.总结 Collection系列…

事件监听,事件类型

点击按钮实现 盒子关闭 随机点名案例 先给开始按钮添加点击事件 获取显示名字的 div 和 开始按钮的 div给开始按钮添加点击事件&#xff0c;设置定时器&#xff0c;每隔35ms内获取一个数组长度内的随机数&#xff0c;将显示名字的 div内的内容替换为该随机数作为下标的数组的内…

基于PyQt - 6的医疗多模态大模型医疗研究系统中的创新构建与应用(上 .文章部分)

一、引言 1.1 研究背景与意义 在当今数智化时代,医疗行业正经历着深刻的变革,对智能化、高效化的需求日益迫切。传统的医疗模式在面对海量的医疗数据、复杂的诊断流程以及个性化的治疗需求时,逐渐显露出局限性。随着人工智能技术的飞速发展,多模态大模型作为一种前沿技术…

微软震撼发布:Phi-4语言模型登陆Hugging Face

近日&#xff0c;微软公司在Hugging Face平台上正式发布了其最新的语言模型Phi-4&#xff0c;这一发布标志着人工智能技术的又一重要进步。Phi-4模型以其140亿参数的高效配置&#xff0c;在复杂推理任务中表现出色&#xff0c;特别是在数学领域&#xff0c;更是展现出了卓越的能…

深度解析Linux中关于操作系统的知识点

操作系统概述与核心概念 任何计算机系统都包含一个基本的程序集合&#xff0c;成为操作系统OS 操作系统是一款进行软硬件管理的软件 操作系统包括&#xff1a; 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;驱动管理&#xff09; 其他程序&#xff08;例如数据…

LLM在事实性和时效性方面问题解决办法

LLM在事实性和时效性方面问题解决办法 以及进行可靠评估的一些方法 一、解决事实性问题的技术方法 知识图谱融合与增强 方法:将知识图谱与LLM集成,在模型生成内容时,实时查询知识图谱以确保信息的准确性。例如,当LLM生成关于历史事件的描述时,它可以查询历史知识图谱,获…