深度學習中的資料儲存在多維numpy陣列中,也叫張量(tensor)。一般來說,當前所有機器學習系統都使用張量作為基本的資料結構。張量對這個領域非常重要,重要到google 的tensorflow 都以它來命名。那麼什麼是張量?
張量這一概念的核心在於,它是乙個資料容器。它包含的資料幾乎總是數值資料,因此它是數字的容器。你可能對矩陣很熟悉,它是二維張量。張量是矩陣向任意維度的推廣[注意,張量的維度(dimension)通常叫作軸(axis)]。
僅包含乙個數字的張量叫作標量(scalar,也叫標量張量、零維張量、0d 張量)。在numpy中,乙個float32 或float64 的數字就是乙個標量張量(或標量陣列)。你可以用ndim 屬性來檢視乙個numpy 張量的軸的個數。標量張量有0 個軸(ndim == 0)。張量軸的個數也叫作階(rank)。下面是乙個numpy 標量。
>>
>
import numpy as np
>>
> x = np.array(12)
>>
> x
array(12)
>>
> x.ndim
0
數字組成的陣列叫作向量(vector)或一維張量(1d 張量)。一維張量只有乙個軸。下面是乙個numpy 向量。
>>
> x = np.array([12
,3,6
,14,7
])>>
> x
array([12
,3,6
,14,7
])>>
> x.ndim
這個向量有5 個元素,所以被稱為5d 向量。不要把5d 向量和5d 張量弄混!
向量組成的陣列叫作矩陣(matrix)或二維張量(2d 張量)。矩陣有2 個軸(通常叫作行和列)。你可以將矩陣直觀地理解為數字組成的矩形網格。下面是乙個numpy 矩陣。
>>
> x = np.array([[
5,78,
2,34,
0],[
6,79,
3,35,
1],[
7,80,
4,36,
2]])
>>
> x.ndim
2
將多個矩陣組合成乙個新的陣列,可以得到乙個3d 張量,你可以將其直觀地理解為數字組成的立方體。下面是乙個numpy 的3d 張量。
>>
> x = np.array([[
[5,78
,2,34
,0],
[6,79
,3,35
,1],
[7,80
,4,36
,2]]
,[[5
,78,2
,34,0
],[6
,79,3
,35,1
],[7
,80,4
,36,2
]],[
[5,78
,2,34
,0],
[6,79
,3,35
,1],
[7,80
,4,36
,2]]
])>>
> x.ndim
3
張量是由以下三個關鍵屬性來定義的。
from keras.datasets import mnist
(train_images, train_labels)
,(test_images, test_labels)
= mnist.load_data(
)
train_images 和train_labels 組成了訓練集(training set),模型將從這些資料中進行學習。然後在測試集(test set,即test_images 和test_labels)上對模型進行測試。
接下來,我們給出張量train_images 的軸的個數,即ndim 屬性。
>>
>
print
(train_images.ndim)
3
下面是它的形狀。
>>
>
print
(train_images.shape)
(60000,28
,28)
下面是它的資料型別,即dtype 屬性。
>>
>
print
(train_images.dtype)
uint8
所以,這裡train_images 是乙個由8 位整數組成的3d 張量。更確切地說,它是60000個矩陣組成的陣列,每個矩陣由28×28 個整數組成。每個這樣的矩陣都是一張灰度影象,元素取值範圍為0~255。
我們用幾個你未來會遇到的示例來具體介紹資料張量。你需要處理的資料幾乎總是以下類
別之一。
神經網路中的資料表示
當前所有機器學習系統都使用張量作為基本資料結構。張量對這個領域非常重要,重要到 google 的 tensorflow 都是以它來命名的。那麼什麼是張量?標量 英語 scalar 又稱純量,是只有大小 沒有方向 可用實數表示的乙個量。實際上標量就是實數,標量 這個稱法只是為了區別於向量。標量可以是負...
神經網路的資料表示 張量 Tensor
張量 tensor 是乙個資料容器,它所包含的一般是數值資料。下面是張量中的一些名詞 import numpy as np x np.array 12 x array 12 x.ndim 0 x np.array 12 3,6 14,7 x array 12 3,6 14,7 x.ndim 1這個向...
keras入門 神經網路的資料表示
資料儲存在多維 numpy 陣列中,也叫張量 tensor 一般來說,當前所 有機器學習系統都使用張量作為基本資料結構。張量這一概念的核心在於,它是乙個資料容器。它包含的資料幾乎總是數值資料,因此它 是數字的容器。你可能對矩陣很熟悉,它是二維張量。張量是矩陣向任意維度的推廣 注意,張量的維度 dim...