神經網路中,前向傳播和反向傳播 矩陣維度的問題

2021-08-21 07:21:11 字數 1204 閱讀 5497

以1個輸入層、1個隱藏層和1個輸出層為例,分析程式設計中變數的維度。

初始化:

w1的維度:    隱藏層節點個數 *特徵個數  

b1的維度:    1 * 隱藏層節點個數     

w2的維度:    輸出層節點個數 * 隱藏層節點個數   

b2的維度:    1 * 輸出層節點個數     

前向傳播: 

train_data             特徵數量 * 樣本數量              

z1 = w1 * train_data    隱藏層節點個數 * 樣本數量

a1 : z1                隱藏層節點個數* 樣本數量

z2 = w2 * a1           輸出層節點個數 * 樣本數量       

a2 : z2                輸出層節點個數 * 樣本數量

y : a2                 輸出層節點個數 * 樣本數量

z1 = w1 * train_data + b1; 

a1 = sigmoid(z1);   

z2 = w2 * a1 + b2;

a2 = sigmoid(z2);   

反向傳播: 

da2 = dal               輸出層節點個數* 樣本數量  如果cost function等於y,則是這種情況

s2 = 1/(1+np.exp(-z2))    輸出層節點個數* 樣本數量    

dz2 = da2 .* s2 .* (1-s2)   輸出層節點個數* 樣本數量  不是點積,是按相同位置相乘。  s2 .* (1-s2)為sigmoid的導數

dw2 = (1/m) dz2 * a1.t              輸出層節點個數 *隱藏層節點個數

db2 = (1/m) sum(dz2)               輸出層節點個數 *1

da1 = w2.t * dz2         隱藏層節點個數 * 樣本數量

s1 = 1/(1+np.exp(-z1))    隱藏層節點個數* 樣本數量

dz1 = da1 .* s1 .* (1-s1)   隱藏層節點個數* 樣本數量

dw1 = (1/m) dz1 * train_data.t       隱藏層節點個數 * 特徵個數

db1 = (1/m) sum(dz1)               隱藏層節點個數 *1

前向傳播和反向傳播 手撕 神經網路反向傳播

神經網路前向傳播一般用於搭建整個神經網路的結構框架,形成整個網路的邏輯通路。反向傳播用於更新每層之間的權重,減少損失,進而提公升 準確度。下面是乙個神經網路的結構圖 第一層是輸入層,包含兩個神經元i1,i2,和截距項b1 第二層是隱含層,包含兩個神經元h1,h2和截距項b2,第三層是輸出o1,o2,...

神經網路前向傳播與反向傳播

神經網路 神經網路可以理解為乙個輸入x到輸出y的對映函式,即f x y,其中這個對映f就是我們所要訓練的網路引數w,我們只要訓練出來了引數w,那麼對於任何輸入x,我們就能得到乙個與之對應的輸出y。只要f不同,那麼同乙個x就會產生不同的y,我們當然是想要獲得最符合真實資料的y,那麼我們就要訓練出乙個最...

神經網路 前向,反向傳播過程

x,資料集矩陣。每一行的元素代表了乙個樣例的特徵值x1,x2,x3.共有n行,說明資料集一共n個樣例 theta,引數矩陣 行數 要生成的神經元個數 列數 上一層的輸入個數 每一行的元素代表了對樣例各個特徵值的權重 以資料集為x 5 3 使用上圖的網路結構為例 輸入層 x 5 3 說明資料集有5個樣...