張量
Tensor 是一個 N 維矩陣
- Scalar 是一個 0 維張量
- Vector 是一個 1 維張量
- Matrix 是一個 2 維張量
Tensor 是 Vectors 和 Matrices 向更高維度推廣的泛化。
標量 | 向量 | ||||||||||||||||||||||||||
1 |
|
||||||||||||||||||||||||||
矩陣 | 張量 | ||||||||||||||||||||||||||
|
|
Tensor 的秩
Tensor 在 N 維空間中的方向數,稱為該張量的 Rank。
Rank 用 R 表示。
Scalar 是單個數字。
- 它有 0 個軸
- 它的 Rank 為 0
- 它是 0 維 Tensor
Vector 是一個數字陣列。
- 它有 1 個軸
- 它的 Rank 為 1
- 它是 1 維 Tensor
Matrix 是一個 2 維陣列。
- 它有 2 個軸
- 它的 Rank 為 2
- 它是 2 維 Tensor
真實 Tensor
嚴格來說,以上所有都是張量,但當我們談論張量時,我們通常指的是維度大於 2 (R > 2) 的矩陣。

JavaScript 中的線性代數
線上性代數中,最簡單的數學物件是 Scalar
const scalar = 1;
另一個簡單的數學物件是 Array
const array = [ 1, 2, 3 ];
Matrices 是 2 維 Arrays
const matrix = [ [1,2],[3,4],[5,6] ];
Vectors 可以寫成只有一列的 Matrices
const vector = [ [1],[2],[3] ];
Vectors 也可以寫成 Arrays
const vector = [ 1, 2, 3 ];
Tensors 是 N 維 Arrays
const tensor = [ [1,2,3],[4,5,6],[7,8,9] ];
JavaScript 中的 Tensor 操作
在 JavaScript 中程式設計 Tensor 操作,很容易變成一團亂麻的迴圈。
使用 JavaScript 庫可以為您省去很多麻煩。
用於 Tensor 操作的最常用庫之一稱為 tensorflow.js。
Tensor 加法
const tensorA = tf.tensor([[1, 2], [3, 4], [5, 6]]);
const tensorB = tf.tensor([[1,-1], [2,-2], [3,-3]]);
// Tensor 加法
const tensorAdd = tensorA.add(tensorB);
// 結果 [ [2, 1], [5, 2], [8, 3] ]
Tensor 減法
const tensorA = tf.tensor([[1, 2], [3, 4], [5, 6]]);
const tensorB = tf.tensor([[1,-1], [2,-2], [3,-3]]);
// Tensor 減法
const tensorSub = tensorA.sub(tensorB);
// 結果 [ [0, 3], [1, 6], [2, 9] ]