张量
张量是N 维矩阵
- 标量是 0 维张量
- 向量是 1 维张量
- 矩阵是 2 维张量
张量是对向量和矩阵到更高维度的推广。
标量 | 向量 | ||||||||||||||||||||||||||
1 |
|
||||||||||||||||||||||||||
矩阵 | 张量 | ||||||||||||||||||||||||||
|
|
张量秩
张量在N维空间中可以具有的方向数量称为张量的秩。
秩用R表示。
标量是一个单独的数字。
- 它有 0 个轴
- 它的秩为 0
- 它是 0 维张量
向量是数字的数组。
- 它有 1 个轴
- 它的秩为 1
- 它是 1 维张量
矩阵是二维数组。
- 它有 2 个轴
- 它的秩为 2
- 它是 2 维张量
真实张量
从技术上讲,以上所有都是张量,但当我们谈论张量时,我们通常指的是维度大于 2 的矩阵(R > 2)。
JavaScript 中的线性代数
在线性代数中,最简单的数学对象是标量
const scalar = 1;
另一个简单的数学对象是数组
const array = [ 1, 2, 3 ];
矩阵是二维数组
const matrix = [ [1,2],[3,4],[5,6] ];
向量可以写成只有一列的矩阵
const vector = [ [1],[2],[3] ];
向量也可以写成数组
const vector = [ 1, 2, 3 ];
张量是N 维数组
const tensor = [ [1,2,3],[4,5,6],[7,8,9] ];
JavaScript 张量运算
在 JavaScript 中编写张量运算很容易变成循环的意大利面条代码。
使用 JavaScript 库可以节省很多麻烦。
用于张量运算的最常见库之一称为tensorflow.js。
张量加法
const tensorA = tf.tensor([[1, 2], [3, 4], [5, 6]]);
const tensorB = tf.tensor([[1,-1], [2,-2], [3,-3]]);
// 张量加法
const tensorAdd = tensorA.add(tensorB);
// 结果 [ [2, 1], [5, 2], [8, 3] ]
张量减法
const tensorA = tf.tensor([[1, 2], [3, 4], [5, 6]]);
const tensorB = tf.tensor([[1,-1], [2,-2], [3,-3]]);
// 张量减法
const tensorSub = tensorA.sub(tensorB);
// 结果 [ [0, 3], [1, 6], [2, 9] ]