在神经网络文献中,我们经常会遇到“张量”这个词。
它与向量不同吗?从矩阵?你有任何具体的例子来阐明它的定义吗?
我对它的定义有点困惑。Wikipedia 没有帮助,有时我的印象是它的定义取决于所使用的特定机器学习环境(TensorFlow、Caffee、Theano)。
在神经网络文献中,我们经常会遇到“张量”这个词。
它与向量不同吗?从矩阵?你有任何具体的例子来阐明它的定义吗?
我对它的定义有点困惑。Wikipedia 没有帮助,有时我的印象是它的定义取决于所使用的特定机器学习环境(TensorFlow、Caffee、Theano)。
出于数据分析的目的,您可以有效地将它们视为数组,可能是多维的。因此它们包括标量、向量、矩阵和所有高阶数组。
精确的数学定义更复杂。基本上这个想法是张量将多线性函数转换为线性函数。见(1)或(2)。(多重线性函数是在其每个分量中都是线性的函数,例如将行列式视为列向量的函数。)
这种定义张量的数学属性的一个结果是张量相对于雅可比变换很好,雅可比对从一个坐标系统到另一个坐标系统的变换进行编码。这就是为什么人们经常将张量的定义视为物理学中“在坐标变化下以某种方式变换的对象”。例如,请参阅此视频或此视频。
如果我们正在处理足够“好”的对象(我们希望存在并明确定义的所有导数),那么所有这些考虑张量的方式本质上是等价的。请注意,我提到的考虑张量的第一种方法(多维数组)忽略了协变和逆变张量之间的区别。(区别在于它们的系数在基础向量空间的变化下如何变化,即基本上在行向量和列向量之间。)请参阅这些其他 StackExchange 问题:(1) (2) (3) (4)
对于研究张量在神经网络中的应用的研究人员使用的一本书(例如在以色列的 Technion),有 Wolfgang Hackbusch 的Tensor Spaces and Numerical Calculus。我自己还没有读过,虽然后面的一些章节似乎使用了高等数学。
在机器学习文献中,张量只是多维数组的同义词:
张量,也称为多维数组,是矩阵向高阶的推广,是有用的数据表示架构。
因此,1.d 张量是“向量/元组”,而 2.d。张量是一个“矩阵/2.d.array”。
Theano vs TensorFlow vs Pytorch vs ...
在特定的库中,该术语可能仅限于数值数组:
Theano是一个 Python 库,允许您定义、优化和有效评估涉及多维数组的数学表达式。
或包含更广泛数据类型的那些:
Tensor - TensorFlow 程序中的主要数据结构。张量是 N 维(其中 N 可能非常大)数据结构,最常见的是标量、向量或矩阵。张量的元素可以保存整数、浮点或字符串值。
词源
张量在数学中具有更具体的含义,作为向量空间之间的多线性映射的抽象,但是给定一个固定的基础,这样的映射可以表示为多维数组,机器学习术语正是从这种用法中得名的。