緯緯道來

大四學生,主修資訊工程,熱衷於深度學習與機器學習。初期先以基本的程式教學為主,希望我的文章能夠幫助到你!(https://linktr.ee/johnnyhwu)

Tensor 基本觀念 (3)

想學習 TensorFlow 嗎?不如從 Tensor 開始吧!

前言 & 概述

Tensor 指的是多維度的陣列,是深度學習中最基本的運算元素。本文參考 TensorFlow 官方教學,將 Tensor 的相關介紹,以更簡單易懂的方式介紹給讀者!我們將 Tensor 基本觀念的介紹分為兩個部分:(1)(2) 與 (3)。

在本篇文章 (3) 中,我們將學習 Tensor 的 DType 與 Broadcasting 概念。

Tensor DType

Tensor 中包含了許多元素,這些元素要有相同的 Data Type,定義在 Tensor 的 dtype 資訊中。我們在建立 Tensor 時,除了給定每個元素的數值外,也應該指定這個 Tensor 的 dtype。

如下圖所示,建立 2 個 dtype 為 float64 與 uint8 的 Tensor。

Broadcasting

Broadcasting 中文稱為「廣播」,可以想成「資料擴散」的一種機制。在學習陣列的操作時,Broadcasting 是相當重要的觀念!TensorFlow 中 Broadcasting 的概念與 Numpy 中的相同,都是指「2 個 Tensor 在進行操作時,形狀 (維度) 小的 Tensor 會被擴大成形狀 (維度) 大的 Tensor」。

以下圖的程式碼為例,x 是 1 維的 Tensor,shape=(4,);y 則是 0 維的 Tensor,shape=()。當我們進行 x+y 時,y 的維度 (形狀) 就會被擴展成 x 的維度 (形狀)。因此,y 會變成 [1, 1, 1, 1]。最後兩者相加的結果就會是 [2, 3, 4, 5]。

我們再舉一個例子說明。以下圖為例,x 的 shape=(3, 1) 而 y 的 shape=(1, 4)。兩者進行運算時,x 會被擴展為 shape=(3, 4),每一個 Column 皆為 [[1], [2], [3]];y 會被擴展為 shape=(3, 4),每一個 Row 皆為 [1, 2, 3, 4]。

x 與 y 的運算將會如下圖所示:

結語

在本篇文章中,我們學習了 Tensor 中 DType 與 Broadcasting 的觀念。透過這 3 篇文章,我們也將 Tensor 基本與重要的觀念介紹完畢。在下一篇文章中,將會開始學習 TensorFlow 中 Variable 的觀念。


👣 👣 👣 我喜歡撰寫程式開發、資料科學領域相關的文章,希望可以透過簡單的文字解釋複雜的觀念!如果你也有興趣可以到我的其他平台逛逛哦!
👉🏻 DataSci Ocean
👉🏻 YouTube
👉🏻 Instagram


系列文章

👉🏻 Tensor 基本觀念 (1)
👉🏻 Tensor 基本觀念 (2)


延伸閱讀

👉🏻 Google Colaboratory 介紹
👉🏻 條件機率 vs 聯合機率
👉🏻 將 Django App 部署到 Heroku on Mac
👉🏻 在 LINE Developers 上建立 LINE Bot

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

CC BY-NC-ND 2.0 版權聲明

看不過癮?

一鍵登入,即可加入全球最優質中文創作社區