pytorch深度学习基础 5(张量篇1)

PyTorch中的张量

PyTorch是一个流行的开源深度学习库,它提供了一个动态计算图的高级接口,允许用户灵活地执行各种机器学习任务。在PyTorch中,张量是数据存储和运算的基本单元,类似于NumPy的ndarray。张量是多维数组,可以包含标量、向量、矩阵等数据类型,用于表示在一些矢量、标量和其他张量之间的线性关系。在数学上,张量是一个定义在向量空间和对偶空间的笛卡尔积上的多重线性映射。在物理学和工程学中,张量被广泛用于描述物理量在空间中的分布和变化3

张量的维度、形状和类型

维度(Rank)

张量的维度指的是张量中用来索引元素的索引个数。0维张量就是标量,因为不需要索引;对于向量而言,只需要一个索引就可以得到相应元素。高维的张量其实就是对低维张量的堆叠。例如,一个二维张量就是一个矩阵,而一个三维张量则是一个“立方体”形状的数据结构3

形状(Shape)

张量的形状指的是张量中每一维度的大小。形状中小括号的数字个数就表示了张量的维度数(秩)。例如,一个三维张量的形状可以是(3, 224, 224),表示有三个通道,每个通道的大小是224x2241

类型(Type)

张量的类型指的是张量中每个元素的数据类型。PyTorch中,张量可以有不同的数据类型,包括浮点型和整型。浮点型按照精度不同,又分为16位、32位以及64位;整型则根据有无符号位以及精度,又分为8位无符号整型、8位有符号整型、16位有符号整型、32位有符号整型以及64位有符号整型。每个类型又可以区分为CPU类型以及GPU类型2

张量的创建和使用

创建张量

在PyTorch中,可以使用torch.tensor() 函数来创建一个张量。例如,创建一个标量张量、向量张量或矩阵张量3

使用0初始化向量

可以使用torch.zeros 函数来创建一个所有元素都为0的向量。类似地,torch.ones 函数可以用来创建一个所有元素都为1的向量3

使用随机值初始化向量

PyTorch提供了torch.randn 来生成从标准正态分布中抽取的随机浮点数,以及torch.randint 来生成指定范围内的随机整数3

创建二维张量

在PyTorch中,还可以创建二维张量(类似于NumPy中的矩阵)。可以使用torch.zeros 或torch.randn 来初始化二维张量3

张量的基本运算

在PyTorch中,所有的数据都是通过张量来表示的。张量是一个多维数组,可以包含标量、向量、矩阵等数据类型。通过使用张量计算库(如PyTorch、TensorFlow等),可以方便地实现神经网络的前向传播、反向传播和优化等过程3

PyTorch中的张量是数据存储和运算的基本单元,它们是多维数组,可以包含标量、向量、矩阵等数据类型。张量的维度、形状和类型是描述张性的关键属性。PyTorch提供了丰富的函数和方法来创建、操作和管理张量,使得深度学习模型的开发和部署变得更加便捷。、

其实pytorch中的张量和Python中的列表差不多,但也有所区别,今天我们来讲一下张量的基本语法以及常用操作。

第一步肯定是导入我们最熟悉的torch库

import torch
  创建一个大小为3的一维张量,用1.0填充
# 创建一个大小为3的一维张量,用1.0填充
a = torch.ones(3)
print(a)

下面的操作就和列表的操作基本一样

print(a[0])
print(float(a[0]))
a[0] = 2.0
print(a)

使用zeros()函数来获得适当大小的数组
# 使用zeros()函数来获得适当大小的数组
points = torch.zeros(6)
print(points)

虽然说我们得到了全是0的张量,但是每个0的位置都可以自己按照需求进行数值的替换

下面举个例子

points[0] = 6.0
points[1] = 1.0
points[2] = 8.0
points[3] = 9.0
points[4] = 8.0
points[5] = 5.0
print(points)

这样一来我们就可以得到一个我们自己想要的张量了

或者自己直接使用函数直接构造一个自己的张量,避免了使用zeros函数还需要一个个进行数值替换那么麻烦

points1 = torch.tensor([4.0, 1.0, 5.0, 3.0, 2.0, 1.0])
print(points1)

  创建一个二维张量
# 创建一个二维张量
points2 = torch.tensor([[4.0, 1.0],[5.0, 3.0],[2.0, 1.0]])
print(points2)

 查看一个张量的形状
points2.shape
使用zeros()函数初始化张量的形状
points4 = torch.zeros(3, 2)
print(points4)
print(points4.shape)

和上面一样自己直接创建二维张量也是一样的,但是高维张量的索引和列表的索引有所不同,下面我用示例来展示一下

points5 = torch.tensor([[9.0, 8.0, 5.0],[6.0, 0.0, 4.0],[6.0,1.0,8.0]])
print(points5[0])
print(points5[0, 1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值