資源簡介
bpnn神經網絡代碼,是深度學習中一種比較常用的反饋神經網絡模型

代碼片段和文件信息
#?Back-Propagation?Neural?Networks
#
#?Written?in?Python.??See?http://www.python.org/
#
#?Neil?Schemenauer?
import?math
import?random
import?operator
import?string
import?sys
random.seed(0)
#?calculate?a?random?number?where:??a?<=?rand?def?rand(a?b):
????return?(b-a)*random.random()?+?a
#?Make?a?matrix?(we?could?use?NumPy?to?speed?this?up)
def?makeMatrix(I?J?fill=0.0):
????m?=?[]
????for?i?in?range(I):
????????m.append([fill]*J)
????return?m
class?NN:
????def?__init__(self?ni?nh?no):
????????#?number?of?input?hidden?and?output?nodes
????????self.ni?=?ni?+?1?#?+1?for?bias?node
????????self.nh?=?nh
????????self.no?=?no
????????#?activations?for?nodes
????????self.ai?=?[1.0]*self.ni
????????self.ah?=?[1.0]*self.nh
????????self.ao?=?[1.0]*self.no
????????#?create?weights
????????self.wi?=?makeMatrix(self.ni?self.nh)
????????self.wo?=?makeMatrix(self.nh?self.no)
????????#?set?them?to?random?vaules
????????for?i?in?range(self.ni):
????????????for?j?in?range(self.nh):
????????????????self.wi[i][j]?=?rand(-2.0?2.0)
????????for?j?in?range(self.nh):
????????????for?k?in?range(self.no):
????????????????self.wo[j][k]?=?rand(-2.0?2.0)
????????#?last?change?in?weights?for?momentum
????????self.ci?=?makeMatrix(self.ni?self.nh)
????????self.co?=?makeMatrix(self.nh?self.no)
????def?update(self?inputs):
????????if?len(inputs)?!=?self.ni-1:
????????????raise?ValueError?‘wrong?number?of?inputs‘
????????#?input?activations
????????for?i?in?range(self.ni-1):
????????????#self.ai[i]?=?1.0/(1.0+math.exp(-inputs[i]))
????????????self.ai[i]?=?inputs[i]
????????#?hidden?activations
????????for?j?in?range(self.nh):
????????????sum?=?0.0
????????????for?i?in?range(self.ni):
????????????????sum?=?sum?+?self.ai[i]?*?self.wi[i][j]
????????????self.ah[j]?=?1.0/(1.0+math.exp(-sum))
????????#?output?activations
????????for?k?in?range(self.no):
????????????sum?=?0.0
????????????for?j?in?range(self.nh):
????????????????sum?=?sum?+?self.ah[j]?*?self.wo[j][k]
????????????self.ao[k]?=?1.0/(1.0+math.exp(-sum))
????????return?self.ao[:]
????def?backPropagate(self?targets?N?M):
????????if?len(targets)?!=?self.no:
????????????raise?ValueError?‘wrong?number?of?target?values‘
????????#?calculate?error?terms?for?output
????????output_deltas?=?[0.0]?*?self.no
????????for?k?in?range(self.no):
????????????ao?=?self.ao[k]
????????????output_deltas[k]?=?ao*(1-ao)*(targets[k]-ao)
????????#?calculate?error?terms?for?hidden
????????hidden_deltas?=?[0.0]?*?self.nh
????????for?j?in?range(self.nh):
????????????sum?=?0.0
????????????for?k?in?range(self.no):
????????????????sum?=?sum?+?output_deltas[k]*self.wo[j][k]
????????????hidden_deltas[j]?=?self.ah[j]*(1-self.ah[j])*sum
????????#?update?output?weights
????????for?j?in?range(self.nh):
????????????for?k?in?range(self.no):
????????????????change?=?output_deltas[k]*self.ah[j]
???????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4797??2001-05-21?16:30??neural_net_1\bpnn.py
?????文件???????2402??2001-05-21?13:07??neural_net_1\code2data.py
?????文件??????41500??2001-06-07?02:13??neural_net_1\code_recog.test
?????文件???????3593??2001-05-21?13:31??neural_net_1\code_recognizer.py
?????文件?????142780??2001-06-07?02:12??neural_net_1\testdata.1k
?????文件?????744810??2001-06-07?02:13??neural_net_1\testdata.200
?????文件?????293480??2001-06-07?02:13??neural_net_1\testdata.500
?????目錄??????????0??2014-10-10?16:19??neural_net_1
-----------?---------??----------?-----??----
??????????????1233362????????????????????8
- 上一篇:電子琴匯編程序.
- 下一篇:操作系統課程設計-消費者生產者問題完整論文
評論
共有 條評論