1. 程式人生 > 其它 >也許是最簡單的BP神經網路python實現

也許是最簡單的BP神經網路python實現

技術標籤:深度學習神經網路深度學習pytorch

前菜

  1. 這是個最基本的bp神經網路,今天我們就用python的numpy來實現它!
    在這裡插入圖片描述

  2. sigmoid函式:
    sigmoid函式

在這裡插入圖片描述

話不多說,上程式碼!

from numpy import exp, array, random, dot

# 訓練資料 輸入
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
# 訓練資料 輸出
training_set_outputs = array([[0, 1, 1, 0]]).T
# seed是限制隨機數,使其生成的都是同一個
random.
seed(1) # 生成隨機數,三行一列 synaptic_weight = 2 * random.random((3, 1)) - 1 # 迭代一萬次,進行訓練 for iteration in range(10000): # 將訓練集的輸入和權重dot進行矩陣相乘,結果輸入到sigmoid函式中 output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weight)))) # 權重調整採用誤差加權導數公式 synaptic_weight += dot(training_set_inputs.T, (training_set_outputs -
output) * output * (1 - output)) # synaptic_weight是最終的權重,array([1,0,0])是測試資料,同樣是sigmoid函式 print(1 / (1 + exp(-dot(array([1, 0, 0]), synaptic_weight))))

除了註釋,實際9行程式碼。

BP神經網路就這麼簡單?不過如此?
非也!這連冰山一角都算不上。(冰山一角,是水的密度為1,冰的密度是0.9,所以冰的1/10會露出在水面之上)

持續關注吧!
peace&love