PyTorch - 04 - 张量解释:深度学习的数据结构
What Is A Tensor?
神经网络中的输入,输出和转换都使用张量表示,结果,神经网络编程大量使用了张量。
张量是神经网络使用的主要数据结构。
张量的概念是其他更具体概念的数学概括。让我们看一下张量的一些特定实例。
Specific Instances Of Tensors
这些示例都是张量的更一般概念的特定实例:
- 数
- 标量
- 数组
- 向量
- 二维阵列
- 矩阵
让我们将上述示例张量列表分为两类:
- 数字,数组,二维数组
- 标量,矢量,矩阵
第一组三个术语(数字,数组,二维数组)是计算机科学中通常使用的术语,而第二组(标量,向量,矩阵)是数学中通常使用的术语。
我们经常看到这种情况,不同的研究领域针对相同的概念使用不同的词。在深度学习中,我们通常仅将所有这些称为张量。
让我们进一步研究这些术语。 当我们从左到右移动时,每个组中的术语彼此对应。 为了显示这种对应关系,我们可以重塑术语列表以得到三组,每组两个术语:
- 数字,标量
- 数组,向量
- 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,如下所示:
- 标量是0维张量
- 向量是一维张量
- 矩阵是二维张量
- nd数组是n维张量
张量使我们可以舍弃这些特定术语,而只需使用n来标识我们正在处理的维数。
关于张量的维数要注意的一件事是,它与我们在矢量空间中引用矢量的维数时的含义不同。 张量的维数不能告诉我们张量中存在多少个分量。
如果我们有一个来自三维欧几里德空间的三维矢量,那么我们将得到一个具有三个分量的有序三元组。
但是,三维张量可以具有三个以上的分量。 例如,我们的二维张量dd有9个分量。
> dd = [
[1,2,3],
[4,5,6],
[7,8,9]
]
总结
在下一篇文章中,当我们讨论等级,轴和形状的概念时,我们将看到如何确定张量中包含的分量数。 这些是我们在深度学习中使用的张量的基本属性。
在研究这些概念时,请牢记索引,因为索引为我们提供了张量相关概念的具体思考方式。