PyTorch 张量(tensor)的秩,轴,形状(Rank, Axes, and Shape)的理解

秩、轴和形状的概念是我们在深度学习中最关心的张量属性。在这篇文章中,我们将深入研究张量的这三个属性。在深度学习中开始使用张量时,秩、轴和形状是我们最关心的三个张量属性。这些概念相互建立,从秩开始,然后是轴,再到形状,因此请密切注意这三者之间的这种关系。

张量的秩(Rank)

张量的秩是指张量中存在的维数(dimensions。假设我们被告知我们有一个 秩为2(rank 2)的张量。这意味着以下所有内容:

  • 我们有一个矩阵
  • 我们有一个二维数组
  • 我们有一个二维张量

秩为1到6的张量分别称为一阶,二阶一直到六阶张量。一阶张量可以理解成一个向量,二阶张量可以理解成矩阵,三阶张量可以理解成立方体,四阶张量可以理解成立方体组成的一个向量,五阶张量可以理解成立方体组成的矩阵,依次类推。如下图所示

在实际操作中,可以理解成[的深度。例如:

rank=1: [0,1,2]

rank=2: [[0,1],[2,3]]

rank=3: [[[0,1],[2,3]],[[4,5],[6,7]]]

张量的轴(Axes)

如果我们有一个张量,并且我们想引用一个特定的维度,我们在深度学习中使用轴这个词。张量的轴是张量的特定维度。

如果我们说一个张量是一个秩为2张量,我们的意思是这个张量有 2 个维度,或者等价地,这个张量有两个轴。 元素是沿着轴存在。每个轴的长度限制元素的个数。现在让我们看看轴的长度。

轴长

每个轴的长度告诉我们每个轴有多少索引可用。

假设我们有一个名为 t 的张量,并且我们知道第一个轴的长度为 3,而第二个轴的长度为 4。

由于第一个轴的长度为 3,这意味着我们可以沿第一个轴索引三个位置,如下所示:

t[0]
t[1]
t[2]

由于第二个轴的长度为 4,我们可以沿第二个轴索引四个位置。对于第一个轴的每个索引,都有四个索引,所以我们有

t[0][0]
t[1][0]
t[2][0]

t[0][1]
t[1][1]
t[2][1]

t[0][2]
t[1][2]
t[2][2]

t[0][3]
t[1][3]
t[2][3]

张量的秩告诉我们一个张量有多少个轴,这些轴的长度将我们引向了一个非常重要的概念,即张量的形状。

张量轴示例

让我们看一些例子来巩固下对轴的理解。举例如下张量

> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]

沿第一个轴的每个元素都是一个数组:

> dd[0]
[1, 2, 3]

> dd[1]
[4, 5, 6]

> dd[2]
[7, 8, 9]

沿第二个轴的每个元素都是一个数字:

> dd[0][0]
1

> dd[1][0]
4

> dd[2][0]
7

> dd[0][1]
2

> dd[1][1]
5

> dd[2][1]
8

> dd[0][2]
3

> dd[1][2]
6

> dd[2][2]
9

请注意,对于张量,最后一个轴的元素始终是数字。每个其它的轴将包含 n 维数组。张量的秩告诉我们一个张量有多少个轴,这些轴的长度将我们引向了一个非常重要的概念,即张量的形状。

张量的形状

张量的形状由每个轴的长度决定,所以如果我们知道给定张量的形状,那么我们就知道每个轴的长度,这告诉我们每个轴上有多少索引可用。

张量的形状为我们提供了张量每个轴的长度。

让我们考虑与之前相同的张量 dd:

> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]

如果我们创建一个这样的torch.Tensor 对象:

> t = torch.tensor(dd)
> t
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])

> type(t)
torch.Tensor

现在,我们有一个 torch.Tensor 对象,因此我们可以要求查看张量的形状:

> t.shape
torch.Size([3,3])

这让我们可以看到张量的形状是 3 x 3。请注意,在 PyTorch 中,张量的大小和形状是一回事。

3 x 3 的形状告诉我们,这个 rank 2 张量的每个轴的长度为 3,这意味着我们在每个轴上都有三个可用的索引。现在让我们看看为什么张量的形状如此重要。

张量的形状很重要

由于几个原因,张量的形状很重要。第一个原因是因为形状允许我们从概念上思考,甚至​​可视化张量。更高阶的张量变得更抽象,形状给了我们一些具体的思考。形状还可以获得有关轴、秩以及索引的所有相关信息。

当我们的张量穿过我们的网络时,在网络内部的不同点会出现某些形状,作为神经网络程序员,我们的工作是了解传入的形状并能够根据需要重塑形状(reshaping)。

本文参考

  • 12
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值