深度學(xué)習(xí)之檢查矩陣的維數(shù)

在設(shè)計(jì)深層網(wǎng)絡(luò)結(jié)構(gòu)時(shí)需要指定每個隱藏層權(quán)重矩陣、偏置項(xiàng)的維度,有的時(shí)候容易搞混淆,導(dǎo)致運(yùn)行時(shí)產(chǎn)生維度不對的錯誤,特別是對于隱藏層既深又寬的網(wǎng)絡(luò),更容易出錯。下面以一個實(shí)例來說明怎么確保矩陣維度不出錯誤。

假設(shè)需要擬合的函數(shù)為:y=f(x)=WX+b。

損失函數(shù):J(W,b)

其中 X:輸入特征,W:權(quán)重,b:偏置項(xiàng)

正(前)向傳播的計(jì)算公式

a[0]=X,z[i]=w[i]*a[i-1]+b[i] ,a[i]=g[i](z[i])

向量化表示

A[0]=X,Z[i]=W[i]*A[i-1]+b[i] ,A[i]=g[i](Z[i])

反(后)向傳播的計(jì)算公式

dz[i]=da[i]*g[i](z[i]),dw[i]=dz[i]*a[i-1]

db[i]=dz[i],da[i-1]=w[i].T*dz[i]

向量化表示

dZ[i]=dA[i]*g[i](Z[i]),dW[i]=1/m*dZ[i]*A[i-1].T

db[i]=1/m*np.sum(dZ[i],axis=1,keepdims=True)

dA[i-1]=W[i].T*dZ[i],W[i]=W[i-1]-α*dJ(W,b)

上述計(jì)算公式中,i:第i層(從1開始計(jì)數(shù)),X:輸入特征,g[i]:第i層使用的激活函數(shù),A[i]
:第i層的輸出(也是第i+1層的輸入),m:樣本數(shù)量,dZ[i]:偏導(dǎo)數(shù),dW[i]:偏導(dǎo)數(shù),db[i]:偏導(dǎo)數(shù),dA[i-1]:偏導(dǎo)數(shù),dJ(W,b):偏導(dǎo)數(shù),α:學(xué)習(xí)率。

網(wǎng)絡(luò)結(jié)構(gòu)圖

神經(jīng)網(wǎng)絡(luò)圖

n[i]:第i層的神經(jīng)元數(shù)量,i=0時(shí)表示輸入層的特征數(shù)目(上圖中有x1,x2兩個特征),m:樣本數(shù)量。

矩陣維度

w[i]=[n[i], n[i-1]],n[i]行,n[i-1]列,從圖中可知行數(shù)是本層神經(jīng)元的數(shù)量,列數(shù)是前一層神經(jīng)元的數(shù)量。

b[i]=[n[i], 1],n[i]行,1列

a[i]=z[i]=[n[i], 1],n[i]行,1列,由前面的正向傳播公式:a[i]=g[i](z[i]),可知a與z的維度是相同的。

a[0]:輸入層,a[i] :第 i+1 層的輸入

在上面的神經(jīng)網(wǎng)絡(luò)圖中,w[1]是一個3行2列的矩陣,b[1]是3行1列的矩陣,a[1]和z[1]也是3行1列的矩陣,類推:w[2]是一個4行3列的矩陣,w[3]是一個2行4列的矩陣,w[4]是一個1行2列的矩陣。

簡單總結(jié)

w矩陣,行數(shù):本層神經(jīng)元的數(shù)量,列數(shù):前一層神經(jīng)元的數(shù)量

b矩陣,行數(shù):該層w矩陣的行數(shù),列數(shù):1

z和a矩陣,行數(shù):該層w矩陣的行數(shù),列數(shù):1

模型訓(xùn)練過程中需要注意的問題,參見 深度學(xué)習(xí)之偏差與方差?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容