麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python實現BP神經網絡

Python實現BP神經網絡

來源:千鋒教育
發布人:xqq
時間: 2023-11-08 00:32:48 1699374768

首先實現幾個工具函數:

defrand(a,b):

return(b-a)*random.random()+a

defmake_matrix(m,n,fill=0.0):#創造一個指定大小的矩陣

mat=[]

foriinrange(m):

mat.append([fill]*n)

returnmat

定義sigmod函數和它的導數:

defsigmoid(x):

return1.0/(1.0+math.exp(-x))

defsigmod_derivate(x):

returnx*(1-x)

定義BPNeuralNetwork類,使用三個列表維護輸入層,隱含層和輸出層神經元,列表中的元素代表對應神經元當前的輸出值.使用兩個二維列表以鄰接矩陣的形式維護輸入層與隱含層,隱含層與輸出層之間的連接權值,通過同樣的形式保存矯正矩陣.

定義setup方法初始化神經網絡:

defsetup(self,ni,nh,no):

self.input_n=ni+1

self.hidden_n=nh

self.output_n=no

#initcells

self.input_cells=[1.0]*self.input_n

self.hidden_cells=[1.0]*self.hidden_n

self.output_cells=[1.0]*self.output_n

#initweights

self.input_weights=make_matrix(self.input_n,self.hidden_n)

self.output_weights=make_matrix(self.hidden_n,self.output_n)

#randomactivate

foriinrange(self.input_n):

forhinrange(self.hidden_n):

self.input_weights[i][h]=rand(-0.2,0.2)

forhinrange(self.hidden_n):

foroinrange(self.output_n):

self.output_weights[h][o]=rand(-2.0,2.0)

#initcorrectionmatrix

self.input_correction=make_matrix(self.input_n,self.hidden_n)

self.output_correction=make_matrix(self.hidden_n,self.output_n)

定義predict方法進行一次前饋,并返回輸出:

defpredict(self,inputs):

#activateinputlayer

foriinrange(self.input_n-1):

self.input_cells[i]=inputs[i]

#activatehiddenlayer

forjinrange(self.hidden_n):

total=0.0

foriinrange(self.input_n):

total+=self.input_cells[i]*self.input_weights[i][j]

self.hidden_cells[j]=sigmoid(total)

#activateoutputlayer

forkinrange(self.output_n):

total=0.0

forjinrange(self.hidden_n):

total+=self.hidden_cells[j]*self.output_weights[j][k]

self.output_cells[k]=sigmoid(total)

returnself.output_cells[:]

定義back_propagate方法定義一次反向傳播和更新權值的過程,并返回最終預測誤差:

defback_propagate(self,case,label,learn,correct):

#feedforward

self.predict(case)

#getoutputlayererror

output_deltas=[0.0]*self.output_n

foroinrange(self.output_n):

error=label[o]-self.output_cells[o]

output_deltas[o]=sigmod_derivate(self.output_cells[o])*error

#gethiddenlayererror

hidden_deltas=[0.0]*self.hidden_n

forhinrange(self.hidden_n):

error=0.0

foroinrange(self.output_n):

error+=output_deltas[o]*self.output_weights[h][o]

hidden_deltas[h]=sigmod_derivate(self.hidden_cells[h])*error

#updateoutputweights

forhinrange(self.hidden_n):

foroinrange(self.output_n):

change=output_deltas[o]*self.hidden_cells[h]

self.output_weights[h][o]+=learn*change+correct*self.output_correction[h][o]

self.output_correction[h][o]=change

#updateinputweights

foriinrange(self.input_n):

forhinrange(self.hidden_n):

change=hidden_deltas[h]*self.input_cells[i]

self.input_weights[i][h]+=learn*change+correct*self.input_correction[i][h]

self.input_correction[i][h]=change

#getglobalerror

error=0.0

foroinrange(len(label)):

error+=0.5*(label[o]-self.output_cells[o])**2

returnerror

定義train方法控制迭代,該方法可以修改最大迭代次數,學習率λ,矯正率μ三個參數.

deftrain(self,cases,labels,limit=10000,learn=0.05,correct=0.1):

foriinrange(limit):

error=0.0

foriinrange(len(cases)):

label=labels[i]

case=cases[i]

error+=self.back_propagate(case,label,learn,correct)

編寫test方法,演示如何使用神經網絡學習異或邏輯:

deftest(self):

cases=[

[0,0],

[0,1],

[1,0],

[1,1],

]

labels=[[0],[1],[1],[0]]

self.setup(2,5,1)

self.train(cases,labels,10000,0.05,0.1)

forcaseincases:

print(self.predict(case))

以上內容為大家介紹了Python實現BP神經網絡,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 么公的好大好深视频好爽想要| 最新国产精品精品视频| 2022国产精品最新在线| 久久亚洲精品人成综合网| 处处吻动漫高清在线观看 | 国产综合色在线视频区| 黄色三级理沦片| aaa一级特黄| 狼群影院www| 中文字幕精品视频在线观| 伊人影院在线播放| 国产成a人片在线观看视频下载 | 美女的尿口无遮掩的照片| 腿张大点我就可以吃扇贝了| 99视频在线| 国产chinesehd在线观看| 啊轻点灬大ji巴太粗太长了h| 国产三级在线免费观看| 国产精品久久久久久影视| 极品丝袜乱系列全集| 狠狠色狠狠色综合网| 黄色a级免费| 被女同桌调教成鞋袜奴脚奴| 好男人视频社区精品免费| 国产精品一区二区久久沈樵| 污动漫3d| 国产系列在线播放| 87福利电影网| 日本一道在线观看| 日本艳妇| 日本黄免费| 亚洲精品国产精品乱码不卞| 国产精品无码久久av| 乱妇伦| 亚洲国产精品专区| 在线观看免费av网站| 欧美无卡| 品色堂永久免费| 黄色三级电影免费观看| 性一交一乱一伦一| 玖玖99视频|