1. 程式人生 > >【深度學習】張量

【深度學習】張量

張量是一個數據容器,包含的資料是數值資料。矩陣是二維張量,而張量則是矩陣向任意維度的推廣。張量的維度(dimension)通常叫作軸(axis)。

標量

只有一個數字的張量叫作標量,也叫0維張量。我們可以通過ndim來檢視張量的維度,或者說軸的個數。

向量

一維張量,只有一個軸。

x = np.array([1,2,3,4,5])
x.ndim # 1

這裡需要區分一個概念是:5維向量和5維張量的區別。

向量有多少個元素就叫多少維向量,但是張量的維度只看軸數。每個軸的維度是任意的。

矩陣

2D張量,這是由向量組成的陣列。矩陣有兩個軸,常常稱之為行和列。第一個軸的元素叫作行,第二個軸的元素叫作列。

這裡需要記住一個案例:

x = np.array([[0.1, 0.8, 0.1], [0.3, 0.1, 0.6], [0.2, 0.5, 0.3], [0.8, 0.1, 0.1]])
y = np.argmax(x, axis=1) # array([1, 2, 1, 0])

import numpy as np
x = np.array([[0.1, 0.8, 0.1], [0.3, 0.1, 0.6], [0.2, 0.5, 0.3], [0.8, 0.1, 0.1]])
y = np.argmax(x, axis=0) # array([3, 0, 1])

對於程式碼裡用到的東西,靈活運用這個案例是更好的選擇,如果按照第二個軸來選擇,則是選出每行的最值,按照第一個軸來選,選出的是每列的最值。

在矩陣中,我們可以拋開中括號這種束縛,直接從一塊資料中按照行和列來看即可。

3D張量以及更高維張量

多個矩陣組合在一起可以變成3D張量,再將多個3D張量組合成一個數組,可以建立一個4D張量,等等。

在深度學習中,一般是0D到4D的張量,處理視訊資料會遇到5D張量。

END.

參考:

《Deep Learning with Python》