PyTorch - 04 - 张量解释:深度学习的数据结构

What Is A Tensor?

神经网络中的输入,输出和转换都使用张量表示,结果,神经网络编程大量使用了张量。

张量是神经网络使用的主要数据结构。

张量的概念是其他更具体概念的数学概括。让我们看一下张量的一些特定实例。

Specific Instances Of Tensors

这些示例都是张量的更一般概念的特定实例:

  1. 标量
  2. 数组
  3. 向量
  4. 二维阵列
  5. 矩阵

让我们将上述示例张量列表分为两类:

  1. 数字,数组,二维数组
  2. 标量,矢量,矩阵

第一组三个术语(数字,数组,二维数组)是计算机科学中通常使用的术语,而第二组(标量,向量,矩阵)是数学中通常使用的术语。

我们经常看到这种情况,不同的研究领域针对相同的概念使用不同的词。在深度学习中,我们通常仅将所有这些称为张量。

让我们进一步研究这些术语。 当我们从左到右移动时,每个组中的术语彼此对应。 为了显示这种对应关系,我们可以重塑术语列表以得到三组,每组两个术语:

  1. 数字,标量
  2. 数组,向量
  3. 2D阵列,矩阵

Indexes Required To Access An Element

这些对中每对的关系是,两个元素都需要相同数量的索引来引用数据结构中的特定元素。

Indexes required Computer science Mathematics
0 数字 标量
1 个数组 向量
2 2D 阵列 矩阵

例如,假设我们有以下数组:

> a = [1,2,3,4]

现在,假设我们要访问(引用)此数据结构中的数字3。 我们可以使用单个索引来做到这一点,如下所示:

> a [2]
3

此逻辑对矢量的工作原理相同。

再举一个例子,假设我们有这个二维数组:

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

现在,假设我们要访问(引用)此数据结构中的数字3。 在这种情况下,我们需要两个索引来定位特定元素。

> dd [0] [2]
3

此逻辑对矩阵的工作原理相同。

请注意,如果我们有数字或标量,则不需要索引,我们可以直接引用数字或标量。

这为我们提供了所需的工作知识,因此我们现在就可以进行概括了。

Tensors Are Generalizations

让我们看看当我们正在考虑的这些数据结构中访问(指)一个特定元素需要两个以上的索引时会发生什么。
在这里插入图片描述

当需要两个以上的索引来访问特定元素时,我们将不再为结构指定特定名称,而开始使用更通用的语言。

数学

在数学中,我们不再使用标量,向量和矩阵之类的词,而开始使用张量或nd-张量。 n告诉我们访问结构中特定元素所需的索引数。

计算机科学

在计算机科学中,我们不再使用数字,数组,二维数组之类的词,而开始使用多维数组或nd数组一词。 n告诉我们访问结构中特定元素所需的索引数。

Indexes required Computer science Mathematics
n nd数组 nd张量

让我们澄清一下。 出于实际目的,在神经网络编程中,张量和nd数组是相同的。

张量和nd数组是一回事!

所以张量是多维数组或nd数组的简称。 我们说张量是泛化的原因是因为我们对所有n值都使用单词tensor,如下所示:

  1. 标量是0维张量
  2. 向量是一维张量
  3. 矩阵是二维张量
  4. nd数组是n维张量

张量使我们可以舍弃这些特定术语,而只需使用n来标识我们正在处理的维数。

关于张量的维数要注意的一件事是,它与我们在矢量空间中引用矢量的维数时的含义不同。 张量的维数不能告诉我们张量中存在多少个分量。

如果我们有一个来自三维欧几里德空间的三维矢量,那么我们将得到一个具有三个分量的有序三元组。

但是,三维张量可以具有三个以上的分量。 例如,我们的二维张量dd有9个分量。

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

总结

在下一篇文章中,当我们讨论等级,轴和形状的概念时,我们将看到如何确定张量中包含的分量数。 这些是我们在深度学习中使用的张量的基本属性。

在研究这些概念时,请牢记索引,因为索引为我们提供了张量相关概念的具体思考方式。

猜你喜欢

转载自blog.csdn.net/weixin_48367136/article/details/111197156