定義:對n-1層和n層而言,n-1層的任意乙個節點,都和第n層所有節點有連線。即第n層的每個節點在進行計算的時候,啟用函式的輸入是n-1層所有節點的加權
引用自_寒潭雁影
顯然,計算公式為:z1=w11x1+w12x2+k1;y=1/(1+e的-z次冪)(其他節點類推)
選用啟用函式1/(1+e的-x次冪)
利用sigmoid進行啟用(類似於復合函式的過程)
步驟
a.前向傳播
將每個節點的表示式排列出來
對所有的x、k、w帶入實際數值,推導z(1)和y,再推o
y和o,是z代入啟用函式的結果
經過計算得出 z(1)、y、z(2)、o
#利用啟用函式完成兩個目標:資料歸一化、引入非線性
#偏置項,解除線性、非線性
b.反向傳播
根據上個步驟的輸入、輸出,以及期望輸出調整引數w
引入損失函式,計算當前損失
求損失函式在w上的偏導數(鏈式法則),帶入前向時求出的值,得到準確值
wnew=w-學習率×損失函式在該方向上的偏導數(具體值)
對於本次傳播中的所有w進行如上操作,就得到了一組全新的引數
#在這裡要注意層次,先從輸出層–隱含層,再從隱含層–輸入層
從後向前,這樣就完成了乙個輪次的引數調整,迴圈往復,直到loss符合預期
# 前向傳播,x 是當前層的輸入
deffp
(self, x)
: self.
input
= x.copy(
) self.output = self.weights.t.dot(self.
input
)+ self.bias
self.next_layer.fp(x=self.output)
# 反向傳播,gradient是當前層輸出對損失函式的梯度, lr是學習率
defbp
(self, gradient, lr)
: self.gradient = gradient.copy(
) last_layer_gradient = self.weights.dot(self.gradient)
self.last_layer.bp(gradient=last_layer_gradient, lr=lr)
grad_for_w = np.tile(self.
input
.t, self.output_shape)
# gradient for weights
self.weights -=
(grad_for_w * self.gradient)
.t * lr
self.bias -= self.gradient * lr # gradient for bias mat is 1
神經網路 全連線神經網路
全連線神經網路 也稱作多層感知機 mlp 1.1 神經元 神經元接收輸入向量x xx神經元節點有權重向量w和偏置項b 輸出值為f w tx b f w tx b f wtx b 在經過類似線性回歸之後 使用啟用函式對得到值進行操作 1.2 網路結構 個人對於每一層的理解就是 使用 這層維度,上層維度...
卷積神經網路 全連線 網路訓練
首先我們回顧下lenet網路結構 如圖1中紅色方框所示,在經過多次卷積 池化 卷積 池化操作後,接著是兩次全連線操作。全連線層是傳統的多層感知器,在輸出層中使用softmax啟用功能 也可以使用其他分類器,例如svm 術語 全連線 表示上一層中的每個神經元都連線到下一層中的每個神經元。卷積和池化層的...
卷積神經網路 全連線層
全連線層 全連線層與卷積層 全連線層與gap 全域性平均池化層 1 2 3 全連線層一般會把卷積輸出的二維特徵圖轉化為一維的乙個向量,全連線層的每乙個節點都與上一層的每個節點連線,是把前一層的輸出特徵都綜合起來,所以該層的權值引數是最多的。作用 全連線網路的作用就是將最後一層卷積得到的feature...