张量
张量等级
张量在N维空间中可以具有的方向数,称为张量的Rank。
排名记为R。
A Scalar 是一个数字。 R = 0.
- 它有 0 个轴
- 它的等级为 0
- 它是一个 0 维张量
向量 是一个数字数组。 R = 1.
- 它有 1 个轴
- 排名为 1
- 它是一维张量
矩阵 是一个二维数组。 R = 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 编写张量运算,很容易变成循环的意大利面条。
使用 JavScript 库可以省去很多麻烦。
用于张量运算的最常用库之一称为 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] ]
Tensor Subtraction
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] ]