当前位置: 首页 > article >正文

【分享】Pytorch数据结构:Tensor(张量)及其维度和数据类型

在PyTorch中,Tensor(张量)是一个多维数组,可以用于存储和操作数据。它类似于Numpy数组,但具有GPU加速和自动求导等功能。

张量有不同的维度,可以是0维(标量)、1维(向量)、2维(矩阵)或更高维。例如,一个0维张量被称为标量,它有一个元素。一个1维张量被称为向量,它有一个轴和多个元素。一个2维张量被称为矩阵,它有两个轴(行和列)和多个元素。以此类推,一个更高维的张量有多个轴和多个元素。

每个张量都有一个数据类型,例如浮点型(float)、整型(int)、布尔型(bool)等。在PyTorch中,常用的数据类型有torch.float32,torch.float64,torch.int32,torch.int64等。

Tensor基础
Tensor(张量) 是PyTorch中用于表示多维数据的主要数据结构,类似于多维数组,可以存储和操作数字数据。

1.1、Tensor的维度(Dimensions)
  Tensor的维度可以理解为Tensor包含的数据在不同方向上的层次或级别。在数学和计算机科学中,维度通常用来描述数据结构的复杂性或者数据在空间中的方向。对于Tensor来说,每一个维度都代表了数据的一个特定的方向或特性。
  Tensor(张量)的维度(Dimensions)是指张量的轴数或阶数。可以类似用坐标轴来理解,可以类比的用坐标轴理解,即Tensor有多少个方向。比如1维,x轴只有一个方向;2维,x轴y轴,两个方向,x轴固定长度;3维,x轴y轴z轴,三个方向,x轴和y轴固定长度。

基本的tensor创建方法:

import torch
x=torch.tensor(data)#利用data创建tensor,data可以是各总维度的列表,或一个常数

下面就让我们来举例说明
0维Tensor:也就是一个标量(Scalar),它没有维度,仅仅是一个单一的数值。例如,温度值、价格或者某个计数。
举例说明:torch.tensor(1)、 torch.tensor(2)

**1维Tensor:**也称作向量(Vector),它有一个维度,可以看作是一系列数值的集合。例如,一维数组 [1, 2, 3] 代表一系列数值或某个特性的不同测量值。当我们将一维张量称为向量时,那么 tensor([1,2,3])是一个3维向量,一个一维张量。
举例说明:torch.tensor([1,2,3,4,5])、torch.tensor([15,2,3,4,5,51])

**2维Tensor:**也称作矩阵(Matrix),它有两个维度,可以表示为行和列。例如,在表格数据中,行可能代表不同的样本,列代表不同的特征或观察值。注意,由于列代表了不同的特征,因此每一行的元素数必须相同,每一行是一个一维的。相当于多个一维构成一个二维。
举例说明:torch.tensor([ [1,2,5],[3,4,2] ]),暂且可以理解为这里有两行分别为[1,2,5]和[3,4,2],这是一个2×3的矩阵。
**3维Tensor:**可以想象为一个数据立方体,常用于表示时间序列数据、图像数据等。例如,在处理图像时,一个3维Tensor可能有三个维度:高度、宽度和颜色通道。相当于多个二维构成一个三维,每个二维的性状必须相同。
举例说明:torch.tensor([ [[1,2],[3,4]] , [[3,3][2,2]] ]),一个三维中,有两个二维,这是一个2×2×2的三维Tensor。

接下来是高维Tensor
随着维度的增加,Tensor可以表示更加复杂的数据结构。例如,在深度学习中,经常会处理4维Tensor来表示一批图像数据,其中维度分别代表样本数、高度、宽度和颜色通道。在自然语言处理(NLP)任务中,可能会使用3维或更高维度的Tensor来表示句子、单词和特征向量。

dim()和.size()方法
在PyTorch中,.dim()和.size()方法用于获取Tensor的维度信息,但它们提供了不同类型的信息:

dim()方法
.dim()方法返回Tensor的维度数,即Tensor有多少轴。(类似多少个坐标轴)
对于一个给定的Tensor,.dim()告诉你这个Tensor是几维的。
例如,如果你有一个2D Tensor(比如一个矩阵),.dim()将返回2;如果是一个3D Tensor(比如一个时间序列数据集),.dim()将返回3。

size()方法
.size()方法返回一个Tensor每个维度的大小(长度),以torch.Size类型表示,其实质是一个元组。 (类似告诉你 每一个坐标轴的长度,不过是按照z,y,x的方式给出的。z个矩形,y行,x列,更高维以此类推)
它提供了关于Tensor每个轴的具体大小的详细信息。如果你想知道一个Tensor的形状,比如有多少行和列,你会使用.size()。
.size()可以返回全部维度的大小,也可以通过指定维度的索引来返回特定维度的大小。例如,对于一个形状为(3, 4, 5)的3D Tensor,.size()将返回torch.Size([3, 4, 5]),而.size(1)将仅返回第二维(即4行)的大小,这和.size(-2)等价。

还有shape属性
.shape属性 和 直接调用.size()返回的是一样的。
最有torch.randn()
torch.randn()可以生成一个指定维度的随机数据的张量。

import torch
tensor=torch.randn(3,3,4,5)
print(tensor.size())

输出:torch.Size([3, 3, 4, 5])

创建一个张量的方式非常简单,可以使用torch.tensor()函数,并传递数据和数据类型作为参数。以下是一个示例:

import torch

# 创建一个标量张量
scalar_tensor = torch.tensor(3.14, dtype=torch.float32)
print(scalar_tensor)

# 创建一个向量张量
vector_tensor = torch.tensor([1, 2, 3, 4, 5], dtype=torch.int32)
print(vector_tensor)

# 创建一个矩阵张量
matrix_tensor = torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float64)
print(matrix_tensor)

输出:

tensor(3.1400)
tensor([1, 2, 3, 4, 5], dtype=torch.int32)
tensor([[1., 2., 3.],
        [4., 5., 6.]], dtype=torch.float64)

除了使用torch.tensor()函数创建张量,还可以使用其他函数如torch.zeros()、torch.ones()、torch.randn()等创建具有特定形状和数据类型的张量。


http://www.kler.cn/a/454720.html

相关文章:

  • Kubernetes 安装 Nginx以及配置自动补全
  • javaweb 04 springmvc
  • oracle基础:中文字段排序详解
  • JVM调优实践篇
  • 代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。
  • 【089】基于51单片机环境监测系统【Proteus仿真+Keil程序+报告+原理图】
  • 《Transformer:AI 领域的变革力量》
  • 深度解析:电商平台API接口的安全挑战与应对策略
  • 修改网络ip地址方法有哪些?常用的有这四种
  • sod123(封装大一点)和sod323的区别
  • 贪心算法(常见贪心模型)
  • Vue BPMN Modeler流程图
  • 安卓 SystemServer 启动流程
  • 24. 解密犯罪时间
  • Unity3D ECS 内存分配器原理
  • 电商矩阵运营服务器怎么选
  • IP协议(网络)
  • 电子应用设计方案75:智能家庭智能锁系统设计
  • WPS中如何为指定区域的表格添加行或者列,同时不影响其它表格?
  • skywalking配置项indexReplicasNumber不生效问题
  • 规则引擎Drools
  • Spring Boot 介绍与应用
  • HTTP代理功能變數名稱解析是什麼?
  • 跨境办公网络问题及其解决思路
  • 气象数据在CASA模型中的应用及实际案例讲解(植被、陆地生态系统、植被净初级生产力NPP、光合作用和呼吸作用、气象数据、MODIS NDVI、遥感)
  • ES elasticsearch-8.17.0-windows-x86_64使用