tags:
- Notes
What is Tensors
张量是神经网络中核心的数据结构,神经网络中的输入、输出和变换都依赖张量进行数据的表示和处理。这与数学(线性代数)有着密切的联系。因为神经网络中的计算都是在计算机中完成的,所以张量成为了打通计算机科学与数学之间的桥梁。
在不同的领域中,张量的术语有所不同,在维度上零到二时:
它们的核心概念是类似的,而且是一一对应的,毕竟你需要在计算机中编程建模神经网络。在维度超过二维时,我们就会使用更加通用的术语。在数学中,我们会使用 N-D tensor 来表示一个多维的数据结构,N 代表索引数量;在计算机科学中,我们会使用 N-D array。
Indexes Required | Computer Science | Mathematics | Rank |
---|---|---|---|
0 | number | scalar | 0 |
1 | array | vector | 1 |
2 | 2-D array | matrix | 2 |
N | N-D array | N-D tensor | N |
在深度学习框架中,张量的核心属性有:rank, axes, shape,也就是向量的秩、轴和形状。前面我们看到了不同维度张量在不同领域中的表示术语,不难理解这些术语代表的含义。我们说过神经网络中的输入、输出和变换(矩阵运算)都是以张量的形式表达和处理的,而张量的核心属性就像是一个个的 handler,给我们操纵张量进行运算的工具。
张量的秩表示了张量的维度数量,决定访问特定元素所需要的索引数量。张量的轴表示张量的数据方向,决定数据在哪个维度上进行计算和组织,比如在二维张量中的数据方向可能沿 X 轴,也可能沿 Y 轴。形状是张量的具体维度大小,即给出每个维度(轴)的长度。
在图像数据的处理中,图像数据通常为 4D 的张量,即有四个轴,分别是长度、宽度、色彩 (color channel) 和批大小 (batch size),因为处理的图像不止一张。
在 CNN 卷积神经网络中,我们通常使用卷积操作来提取特征,其本质就是数据的局部变换,也就是一个升阶和降阶的过程。在这个过程中,一个神经元的 tensor 经过卷积或池化操作后,转换成下一个神经元的 tensor,进而逐步提取更高级别的特征。
在全连接层,我们通常需要将 2D 或是 3D 的张量展平 (flatten) 成 1D 向量用于最终的分类。这些升阶或降阶的操作被称为 reshaping,它确保数据能够适应不同层的计算需求。