张量

张量是一个N维矩阵

  • 标量是 0 维张量
  • 向量是一维张量
  • 矩阵是二维张量

张量向量矩阵向更高维度的推广。

标量向量
1
1
2
3
 
1 2 3

矩阵张量
1 2 3
4 5 6
 
1 2 3
4 5 6
 
4 5 6
1 2 3
 

张量等级

张量在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] ]

亲自试一试 »

了解更多关于 Tensorflow ...