深度學習 核對矩陣維度

2021-09-12 09:07:07 字數 1137 閱讀 3705

在編寫深度神經網路程式時,出現的很多問題都是由於矩陣的維度不對引起的,而且這個問題非常難查。而且python有時候還會改變矩陣的維度(例如之前我們學到的python廣播化),所以我們需要經常核對矩陣的維度,使他們的維度與我們預料中的保持一致。

因此單個訓練樣本時各變數的維度公式

w[l] --> (n[l] , n[l-1])

b[l] --> (n[l] , 1)

z[l] --> (n[l] , 1)

a[l] --> (n[l] , 1)

da[l] --> (n[l] , 1)

dz[l] --> (n[l] , 1)

db[l] --> (n[l] , 1)

dw[l] --> (n[l] , n[l-1])

根據上面的公式,下面舉例列出第一層的相關變數的維度

w[1] --> (3 , 2)

b[1] --> (3 , 1)

z[1] --> (3 , 1)

a[1]–> (3 , 1)

da[1] --> (3 , 1)

dz[1]–> (3 , 1)

db[1] --> (3 , 1)

dw[1] --> (3 , 2)

那麼當多個訓練樣本時維度公式又是怎麼樣的呢?多個樣本時,我們會通過向量化來提公升效率,例如我們會將每個樣本的特徵x列向量(也就是a[0])乙個乙個排起來,組成乙個矩陣。

下面給出m個訓練樣本時的維度公式

w[l] --> (n[l] , n[l-1])–> 和單個樣本時一樣,因為多個樣本它們都共用一套w

b[l] --> (n[l], 1) --> 和單個樣本時一樣,因為多個樣本它們都共用一套b

z[l]–> (n[l] , m)

a[l] --> (n[l] , m)

da[l] --> (n[l], m)

dz[l] --> (n[l] , m)

db[l] --> (n[l] , 1) --> db也只有一套,根據公式db = np.sum(dz) / m可知,db取的是乙個平均值

dw[l]–> (n[l] , n[l-1])–> dw也只有一套,同理db

深度學習中的資料維度表示

只含有乙個數字的張量稱為標量 或 0 維張量 0d 張量 標量有 0 個座標軸,即 ndim 0。張量軸的個數又稱為它的秩。import numpy as np x np.array 12 x array 12 x.ndim 0乙個陣列稱作乙個向量,或 1d 張量。乙個向量只含有乙個座標軸 x np...

矩陣與維度通道的介紹

一 矩陣 1 一維矩陣 矩陣裡的元素的座標是x 2 二維矩陣 矩陣裡的元素的座標是 x,y 3 三維矩陣 矩陣裡的元素的座標是 x,y,z 二 通道 1 單通道 每個座標點有1個值,即矩陣的乙個元素 乙個畫素點 由1個值構成 2 雙通道 每個座標點有2個值,即矩陣的乙個元素 乙個畫素點 由2個值構成...

tensorflow矩陣按維度複製tile

tf.tile 類似於numpy.tile numpy.tile 是個什麼函式呢,說白了,就是把陣列沿各個方向複製 比如 a np.array 0,1,2 np.tile a,2,1 就是把a先沿x軸 就這樣稱呼吧 複製1倍,即沒有複製,仍然是 0,1,2 再把結果沿y方向複製2倍,即最終得到 ar...