舉例:假設乙個有兩個隱藏層,每個隱藏層有乙個神經元且接著乙個sigmoid啟用函式的神經網路例子,輸入為x0,輸出為pre,真實值為rel,經過第乙個線性層為x11,第乙個啟用函式為x12;第二個線性層為x21,第二個啟用函式為x22
一、1.
首先需要知道輸出:pre = sig(w2*sig(w1*x0+b1)+b2) = sig(w2*x12+b2) , x12 = sig(w1*x0+b1)
權重更新公式:w-a*df/dw (a為梯度的學習率) ,啟用函式sig(x)=1/(1+exp(-x))對x求導為 sig(x)*(1-sig(x))
損失值為l2:loss = (pre-rel)**2
2.1.計算w2權重更新變化值:df/dw2 = (dloss/dpre) * (dpre/dw2) = 2*(pre-rel) * sig(w2*x12+b2) * (1-sig(w2*x12+b2)) * x12
2.計算w1權重更新變化值:df/dw1 = (dloss/dpre) * (dpre/dx12) * (dx12/dw1) = (dpre/dx12) * sig(w1*x0+b1) * (1-sig(w1*x0+b1)) * x0 = 2*(pre-rel) * [ sig(w2*x12+b2) * (1-sig(w2*x12+b2)) ] * w2 * [sig(w1*x0+b1) * (1-sig(w1*x0+b1)) ] * x0
為簡化方程 : df/dw1 = (pre-rel) * a * w2 * b *x0 , df/dw1 = (pre-rel) * a * x12
其中 a,b 為sigmoid啟用函式的偏導,恆大於 0 且 小於0.25
二、結合圖形描述:
三、多樣本、多輸入情況
假設將多個樣本同時輸入,即設樣本數為m;且一次有多個輸入值,即特徵數為n。神經網路有2個隱藏層,第一層m1個神經元,第二層m2個神經元。
前向傳播:
1.輸入矩陣為 x 大小為(輸入特徵數,輸入樣本數)即(n , m)
2.w1t(t為轉置)大小 為 (當前層神經元數,當前層輸入特徵數) 即 (m1,n)b1 (當前神經元數,樣本數) 即 (m1,m)
3.w2t(t為轉置)大小為 (當前層神經元數,上一層神經元數) 即 (m2,m1)b1 (當前神經元數,樣本數) 即 (m2,m)
後向傳播:
dw1 和 dw2 分別與 w1,w2 有相同的形狀大小,且dw1,與dw2都是由m個樣本的變化值平均而來即(1/m)
前向傳播和反向傳播 複習下前向反向傳播以及計算量
和大佬學習 沐風 googlenet v1的計算量和參數量精算表 zhuanlan.zhihu.com michael yuan 卷積神經網路的複雜度分析 zhuanlan.zhihu.com 以及資料量運算,和運算時間。首先簡單介紹下概念 卷積過程 單個神經元的卷積過程 如上圖,首先從一維擴充套件...
前向傳播演算法
乙個神經元有多個輸入和乙個輸出,每個神經元的輸入既可以是其他神經元的輸出也可以是整個神經網路的輸入。所謂神經網路的結構就是指的是不同的神經元之間的連線結構。如圖所示,乙個最簡單的神經元結構的輸出就是所有輸入的加權和,而不同的輸入的權重就是神經元的引數。神經網路的優化過程就是優化神經元中引數的取值的過...
tensorflow前向傳播
1.demo1 import tensorflow as tf seed設定隨機種子,每次執行結果一樣 w1 tf.variable tf.random normal 2,3 stddev 1,seed 1 w2 tf.variable tf.random normal 3,1 stddev 1,s...