二、啟用函式層的實現
乘法節點對應的層稱作乘法層;加法節點對應的層稱為加法層。
層的實現有2個共通的介面(或方法):
乘法層的實現
例:z =x
yz = xy
z=xy
class
mullayer
:def
__init__
(self)
: self.x =
none
self.y =
none
defforward
(self, x, y)
:#正向傳播
self.x = x
self.y = y
out = x * y
return out
defbackward
(self, dout)
:#反向傳播
dx = self.y * dout
dy = self.x * dout
return dx,dy
3個問題:
買5斤水果,每斤10元,共需多少元?
每斤多賣1元,最後需比原來多付多少錢?
多買1斤,最後需比原來多付多少錢?
這些問題很簡單,用計算圖表示如下:
買5斤水果,每斤10元,共需50元;
可以看到,每斤水果多賣1元,最後需比原來多付5元;(看藍色部分)
多買1斤,最後需比原來多付10元錢;(看藍色部分)
用上面的乘法層來計算:
mul = mullayer(
)sum
= mul.forward(10,
5)#每斤10元,買5斤
dx, dy = mul.backward(1)
print
('總共需要{}元'
.format
(sum))
print
('每斤多賣1元,最後需要多付{}元'
.format
(dx)
)print
('多買1斤,最後需要多付{}元'
.format
(dy)
)
輸出:
總共需要50元
每斤多賣1元,最後需要多付5元
多買1斤,最後需要多付10元
加法層的實現
例:z =x
+yz=x+y
z=x+
y
class
addlayer
:def
__init__
(self)
:pass
defforward
(self, x, y)
:return x + y
defbackward
(self,dout)
: dx = dout *
1 dy = dout *
1return dx, dy
relu層
回顧一下 relu 函式:
y
=x,~~~x>0\\0,~~~x≤0\end
y== \begin1,~~~x>0\\0,~~~x≤0\end
∂x∂y=
}
y=1+e−
x1對sigmoid函式求導,得:
∂ l∂
x=∂l
∂y∂y
∂x=∂
l∂ye
−xy2
=∂l∂
yy(1
−y)\frac = \frac\frac=\frac\frac}=\fracy(1-y)
∂x∂l=
∂y∂l
∂x∂
y=∂
y∂l
y2e−
x=∂
y∂l
y(1−
y)用計算圖表示為:
**如下:
class
sigmoid
:def
__init__
(self)
: self.y =
none
defforward
(self, x)
: out =1/
(1+np.exp(
-x))
self.y = out
return out
defbackward
(self,dout)
: dx = dout * self.y*(1
- self.y)
return dx
BP誤差反向傳播演算法
bp演算法通過將輸出誤差反向傳播,將誤差分配到每個權值上,利用梯度更新對所有引數進行調整以達到輸出累計誤差最小 來自andrew ng的machine learning課程 為了簡化概念,先不加上偏置單元 符號介紹 zl i 第 l 層第 i節點的誤差zl i 第 l 層第i節點的輸入值al i 第...
Day7 誤差反向傳播
神經網路通過數值微分計算神經網路的權重引數的梯度 即損失函式關於權重引數的梯度 數值微分雖然簡單,容易實現,但是計算比較耗時。計算圖的特徵是可以通過傳遞 區域性計算結果 獲得最終結果。可以通過正向傳播和反向傳播高效地計算各個變數的導數值。計算圖將神經網路的計算過程通過資料的圖結構表示出來。從左往右進...
機器學習 誤差逆傳播演算法 反向傳播演算法
誤差逆傳播演算法 error backpropagation,bp 是神經網路中常用的傳播演算法。bp演算法不僅可以應用於多層前饋神經網路,還可以應用於其他型別的神經網路,如訓練遞迴神經網路。通常所說的 bp網路 一般是指用bp演算法訓練的多層前饋神經網路。給定訓練集 d left y x y x ...