日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

使用python自己搭建一个简单的BP神经网络

發布時間:2024/4/17 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python自己搭建一个简单的BP神经网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
from numpy import exp,array,random,dot #import randomclass NeuralNetwork(object):def __init__(self):#指定隨機數發生器種子,保證每次獲得相同結果的隨機數random.seed(1)#對含有3輸入1輸出的單個神經元建模#即3*1矩陣賦予隨機權重值,范圍(-1,1)#即(a,b)范圍的c*d矩陣隨機數為(b-a)*random.random((c,d))+aself.dendritic_weights=2*random.random((3,1))-1#sigmoid函數,s型曲線,用于對輸入的加權總和x做(0,1)正規化#它可以將一個實數映射到(0,1)空間def __sigmoid(self,x):return 1/(1+exp(-x))#sigmoid函數的導數#這里的x是指__sigmoid函數的輸出def __sigmoid_derivative(self,x):return x*(1-x)#訓練該神經網絡,并調整樹突的權重def train(self,training_inputs,training_output,number_of_training_iteration):'''training_inputs:訓練集的樣本輸入training_outputs:訓練集樣本的輸出number_of_training_iteration:訓練次數1.我們使用sigmoid曲線計算(輸入的加權和映射到0至1之間)作為輸出神經元2.如果輸出是一個大的正(或負)數,這意味著神經元采用這種(或另一種)方式3.從sigmoid曲線可以看出,在較大值處,sigmoid曲線的斜率小,即認為當前權重是正確4.所以,乘以sigmoid函數曲線斜率可以進行調整'''for _iteration in range(number_of_training_iteration):#訓練集導入神經網絡output=self.think(training_inputs)#計算誤差error=training_output-output#將誤差乘以輸入,再乘以s型曲線的梯度adjustment=dot(training_inputs.T,error*self.__sigmoid_derivative(output))self.dendritic_weights+=adjustment#神經網絡def think(self,inputs):#輸入與權重相乘并正交化return self.__sigmoid(dot(inputs,self.dendritic_weights))if __name__=='__main__':#初始化神經網絡nn=NeuralNetwork()#初始化權重print("初始樹突權重:\n{}".format(nn.dendritic_weights))#訓練集,四個樣本,每個樣本有3個輸入,1個輸出#訓練樣本輸入training_inputs_sample=array([[0,0,1],[1,1,1],[1,0,1],[0,1,1]])#訓練樣本的輸出training_outputs_sample=array([[0,1,1,0]]).T#用訓練集訓練nn,重復十萬次,每次做微小的調整nn.train(training_inputs_sample,training_outputs_sample,100000)#訓練后的樹突權重print("訓練后樹突權重:\n{}".format(nn.dendritic_weights))#用新數據進行測試test_result=nn.think(array([1,0,0]))print("測試結果:\n{}".format(test_result))

程序運行結果:

初始樹突權重: [[-0.16595599][ 0.44064899][-0.99977125]] 訓練后樹突權重: [[12.00870061][-0.2044116 ][-5.8002822 ]] 測試結果: [0.99999391]

參考資料:python嘗試自己寫一個簡單的神經網絡

總結

以上是生活随笔為你收集整理的使用python自己搭建一个简单的BP神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。