Tensor 基本觀念 (1)
前言 & 概述
Tensor 指的是多維度的陣列,是深度學習中最基本的運算元素。本文參考 TensorFlow 官方教學,將 Tensor 的相關介紹,以更簡單易懂的方式介紹給讀者!我們將 Tensor 基本觀念的介紹分為兩個部分:(1)、(2) 與 (3)。
在本篇文章 (1) 中,我們將學習 Tensor 與矩陣的差異、Tensor 的形狀以及如何取得 Tensor 中的元素。
Tensor 是什麼?
Tensor 可以想成是一種多維度的陣列,可以是 0 個、1 個、2 個 ⋯ 維度的陣列。如果是 0 個維度的 Tensor 又稱為 Scalar (就是一個數字);1 個維度的 Tensor 又稱為 Vector (向量);2 個維度的 Tensor 又稱為 Matrix (矩陣);3 個維度以上的 Tensor 就統稱為 Tensor。
下圖為簡單的整理:

Tensor 相關名詞介紹
在深度學習中,我們經常會使用一些專有名詞來描述 Tensor。例如,Tensor 的 Dimension (Axis)、Axes、Rank、Shape 與 Size。
- Dimension (Axis) : 指的是 Tensor 的其中一個維度。
- Axes : 指的是 Tensor 的每一個維度。
- Rank : 表示 Tensor 有多少個 Axes。不要和 Matrix 的 Rank 搞混了!!!
- Shape : 表示 Tensor 每一個 Axes 上有多少個元素。
- Size : 表示 Tensor 中總共有多少個元素。
動手實作 Tensor
單看名詞的定義,仍然相當抽象。因此,我們透過 TensorFlow 套件實際動手實作 Tensor 吧!
首先是 0 個維度的 Tensor,也就是 Scalar:
scalar = tf.constant(4) print(scalar) # output: tf.Tensor(4, shape=(), dtype=int32)
因為 Scalar 擁有 0 個 Axes,因此 Rank 為 0,Shape 中沒有任何數字。
接著是 1 個維度的 Tensor,也就是 Vector:
vector = tf.constant([2.0, 3.0, 4.0]) print(vector) # output: tf.Tensor([2. 3. 4.], shape=(3,), dtype=float32)
因為 Vector 擁有 1 個 Axes,因此 Rank 為 1,Shape 中有 1 個數字 3 表示該 Axis 的元素數量。
最後是 2 個維度的 Tensor,也就是 Matrix:
matrix = tf.constant([[1, 2], [3, 4], [5, 6]]) print(matrix) # output: tf.Tensor( [[1 2] [3 4] [5 6]], shape=(3, 2), dtype=int32)
因為 Matrix 擁有 2 個 Axes,因此 Rank 為 2,Shape 中有 2 個數字,3 表示該 Row Axis 有 3 個元素、2 表示 Column Axis 有 2 個元素。
下圖為剛剛建立的三個 Tensor 的示意圖:

接著是 3 個維度的 Tensor:

如上圖所示,3 個維度的 Tensor 擁有 3 個 Axes,Rank 為 3。因此,Shape 中當然也有 3 個數字,分別表示每一個 Axis 中元素的個數。
下圖為這一個 3 維 Tensor 不同的詮釋方式:

我們可以將 Shape = [3, 2, 5] 理解為「這一個 Tensor 有 3 Layer,每個 Layer 有 2 個 Row,每個 Row 有 5 個 Column」。
最後,我們再來看看 4 個維度的 Tensor:

一個 Rank = 4 的 Tensor 有 4 個 Axes。我們通常由左而右真針對每一個 Axis 進行編號。Axis 的編號相當重要,因為我們有時候只會針對其中一個 Axis 進行運算。
我們可以透過 Tensor 物件的 Method 了解 Tensor 的資訊:

Tensor 之間的基本運算
Tensor 之間可以進行運算,例如:Element-Wise 相加、Element-Wise 相乘或是矩陣相乘。如下圖所示,我們可以透過 TensorFlow 內建的函式進行 Tensor 之間的運算。

除了透過 TensorFlow 內建函式,也能直接使用符號進行 Tensor 之間的運算:

結語
在本文中,我們了解了 Tensor 的概念以及基本的專有名詞。並透過 TensorFlow 套件學習實作 Tensor。在下一篇文章中,將學習如何取得 Tensor 中的特定元素以及改變 Tensor 的 Shape。
👣 👣 👣 我喜歡撰寫程式開發、資料科學領域相關的文章,希望可以透過簡單的文字解釋複雜的觀念!如果你也有興趣可以到我的其他平台逛逛哦!
👉🏻 DataSci Ocean
👉🏻 YouTube
👉🏻 Instagram
延伸閱讀
👉🏻 Google Colaboratory 介紹
👉🏻 條件機率 vs 聯合機率
👉🏻 將 Django App 部署到 Heroku on Mac
👉🏻 在 LINE Developers 上建立 LINE Bot
Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!

- Author
- More