麻豆黑色丝袜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
主站蜘蛛池模板: 再深点灬舒服灬太大了网站| 国产精品久久久久9999高清| 性欧美高清come| 亚洲精品动漫在线| 97色伦图片97综合影院| 男生插入女生下面视频| 免费看黄网站在线看| 国产欧美久久一区二区| 日本欧美日韩| 欧美韩日| 日韩精品资源| 亚洲噜噜噜噜噜影院在线播放| 中国美团外卖男男china| 中国一级毛片视频免费看| 日韩国产片| www.俺去| 好吊操在线视频| 国产小鲜肉男同志gay| a4yy私人影院| 探花www视频在线观看高清 | 国产一区二区精品| 夜先锋av资源网站| 国产三级久久久精品麻豆三级| 没有被爱过的女人在线| 波多野结衣电影免费在线观看| 乱中年女人伦av三区| 日本在线高清版卡免v| 黑人猛男大战俄罗斯白妞| 日韩毛片视频| 羞羞漫画在线成人漫画阅读免费| 色综合久久伊人| 欧美成年黄网站色视频| 天天天天做夜夜夜做| 女人与大拘交在线播放| 久热精品在线| 污视频软件大全| 快点使劲舒服爽视频| 国产精自产拍久久久久久蜜| 一级做a爱片久久毛片| 三级毛片在线| 欧美在线不卡|