bp演算法的乙個簡單例子

2022-08-19 10:57:10 字數 1553 閱讀 7351

《視覺機器學習20講》中簡單講解了一下bp演算法的基本原理,公式推導看完後不是特別能理解,在網上找到乙個不錯的例子:bp演算法**(error back-propagation),對bp演算法的理解非常有幫助。於是為了加強記憶,將文中的示例**用python重新寫了一遍。

使用梯度下降演算法不斷迭代更新引數w,使得損失函式(例子中選取平方和誤差)最小。引數更新值δw用鏈式求導法則求出。

1

#-*- coding: utf-8 -*-

2import

numpy as np

3def sigmoid(x):#

啟用函式

4return 1/(1+np.exp(-x))

5 input = np.array([[0.35], [0.9]]) #

輸入資料

6 w1 = np.array([[0.1, 0.8], [0.4, 0.6]])#

第一層權重引數

7 w2 = np.array([0.3, 0.9])#

第二層權重引數

89 real = np.array([[0.5]])#

真實值10

for s in range(0,100,1):

11 pq = sigmoid(np.dot(w1,input))#

第一層輸出

12 output = sigmoid(np.dot(w2,pq))#

第二層輸出,也即是最終輸出

13 e = output-real #

誤差14

if np.square(e)/2<0.01:

15break

16else:17

#否則,按照梯度下降計算權重引數18#

其中,應用鏈式法則計算權重引數的更新量

19 w2 = w2 - e*output*(1-output)*pq.t

20 w1 = w1 - e*output*(1-output)*w2*pq.t*(1-pq.t)*input

21print w1,'

\n',w2 #

輸出最終結果

22print output

最終結果:

w1: [[ 0.09606536  0.78371966]

[ 0.38988235 0.55813627]]

w2: [[ 0.12472196 0.72965595]]

output: [[ 0.63690405]]

為什麼沿著梯度的反方向函式f(x,y)在點p0(x0,y0)處下降得最快?

梯度下降是求解機器學習演算法模型引數的一種常用方法

乙個簡單css例子

lang en charset utf 8 css講解title rel stylesheet href style.css body div dd xddaa hover abc ulli first child ulli last child ulli nth child 3 ulli only...

乙個簡單的json例子

名稱 年齡郵箱 response.setcontenttype text html charset utf 8 response.setheader cache control no cache jsonobject json new jsonobject try json.put jobs mem...

乙個poll的簡單例子

該程式使用poll事件機制實現了乙個簡單的訊息回顯的功能,其伺服器端和客戶端的 如下所示 伺服器端 start from the very beginning,and to create greatness author chuangwei lin e mail 979951191 qq.com b...