keras入門 神經網路的資料表示

2021-09-25 08:29:19 字數 3482 閱讀 2190

資料儲存在多維

numpy

陣列中,也叫張量

(tensor。一般來說,當前所 有機器學習系統都使用張量作為基本資料結構。

張量這一概念的核心在於,它是乙個資料容器。它包含的資料幾乎總是數值資料,因此它

是數字的容器。你可能對矩陣很熟悉,它是二維張量。張量是矩陣向任意維度的推廣[注意,張量的維度

(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

1

這個向量有

5 個元素,所以被稱為

5d 向量

。但不要把

5d向量和

5d張量弄混!

5d 向量只 有乙個軸,沿著軸有 5

個維度,而

5d 張量有

5 個軸(沿著每個軸可能有任意個維度)。

維度 (dimensionality

)可以表示沿著某個軸上的元素個數(比如

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

將多個

3d 張量組合成乙個陣列,可以建立乙個

4d 張量,以此類推。深度學習處理的一般 是 0d

到 4d

5d 張量。

張量是由以下三個關鍵屬性來定義的:

使用語法

train_images[i] 來選擇

沿著第乙個軸的特定數字。選 擇張量的特定元素叫作張量切片。

選擇第

10~100

個數字(這裡的數字是指資料集中手寫數字的張量表示)(不包括第

100

個),並將其放在形狀為

(90, 28, 28) 的陣列中。

>>> my_slice = train_images[10:100]

>>> print(my_slice.shape)

(90, 28, 28)

上面的寫法等價於下面的兩種寫法:

給出了切片沿著每個張量軸的起始索引和結束索引。「 : 」

等同於選擇整個軸。

>>> my_slice = train_images[10:100, :, :] 

>>> my_slice.shape

(90, 28, 28)

>>> my_slice = train_images[10:100, 0:28, 0:28] 

>>> my_slice.shape

(90, 28, 28)

也可以沿著每個張量軸在任意兩個索引之間進行選擇。例如,你可以在所有影象的右下角選出 14

畫素×14

畫素的區域:

my_slice = train_images[:, 14:, 14:]
也可以使用負數索引。與

python

列表中的負數索引類似,它表示與當前軸終點的相對位置。

你可以在影象中心裁剪出 14

畫素×14

畫素的區域:

my_slice = train_images[:, 7:-7, 7:-7]
深度學習模型不會同時處理整個資料集,而是將資料拆分成小批量。具體來看,下 面是 mnist

資料集的乙個批量,批量大小為

128。

batch = train_images[:128]
然後是下乙個批量。

batch = train_images[128:256]
然後是第

n 個批量。

batch = train_images[128 * n:128 * (n + 1)]
對於這種批量張量,第乙個軸(

0 軸)叫作批量軸批量維度

神經網路入門 神經元演算法

目前機器學習 深度學習在業界使用的越來越廣泛,做為乙個有著技術追求的it人,我覺得有必要學習和了解一下這塊的知識,今天就從最簡單的單層神經網路開始介紹。在介紹人工神經網路之前,首先認知下神經元。神經元不知道大家還有印象這個圖嗎?這個是出現在我們生物課本中的一幅圖。乙個神經元的組成基本就是上圖這些東西...

神經網路基礎及Keras入門

神經網路定義 人工神經網路,簡稱神經網路,在機器學習和認知科學領域,是一種模仿生物神經網路 動物的中樞神經系統,特別是大腦 的結構和功能的數學模型或計算模型,用於對函式進行估計或近似。為了描述神經網路,我們先從最簡單的神經網路講起,這個神經網路僅由乙個 神經元 構成,以下即是這個 神經元 的圖示 可...

神經網路的資料表示

深度學習中的資料儲存在多維numpy陣列中,也叫張量 tensor 一般來說,當前所有機器學習系統都使用張量作為基本的資料結構。張量對這個領域非常重要,重要到google 的tensorflow 都以它來命名。那麼什麼是張量?張量這一概念的核心在於,它是乙個資料容器。它包含的資料幾乎總是數值資料,因...