資源簡介
演化ANN.zip

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
import?numpy?as?np
import?copy
def?randonmPro(pro):?#以概率pro生成1,(1-pro)生成0
????pro?*=?100
????num?=?np.random.randint(1101)
????if?num?<=?pro:
????????return?1
????else:
????????return?0
def?sigmoid(z):?#激活函數
????return?1/(1+np.exp(-z))
def?createTrainingData():????#?返回訓練數據集
????data?=?[]
????for?i?in?range(32):
????????L?=?list(str(bin(i))[2:].zfill(5))
????????L?=?[?float(i)?for?i?in?L?]
????????data.append(L)
????labels?=?[1?0?0?1?0?1?1?0?0?1?1?0?1?0?0?1?0?1?1?0100110010110]
????return?datalabels
def?init(N):??#隱藏結點數N初始化
????connectedMatrix?=?np.zeros([N?+?1?m?+?N]?int)?#連接矩陣
????#connectedMatrix?=?np.random.randint(0?2?(N?+?1?m?+?N))
????derMatrix?=?np.zeros([N?+?1?m?+?N?+?1])?#偏導weight權值矩陣,初始化為0
????weightMatrix?=?np.random.uniform(-5?5?(N?+?1?m?+?N?+?1))?#初始化權值矩陣,利用(-55)的均勻分布
????for?i?in?range(N?+?1):
????????for?j?in?range(m?+?N):
????????????connectedMatrix[i][j]?=?randonmPro(0.5)?#以0.5的概率生成連接矩陣
????????????if?connectedMatrix[i][j]==0:
????????????????weightMatrix[i][j+1]=0
????????????if?j?>=?i?+?m:
????????????????connectedMatrix[i][j]?=?0
????????????????weightMatrix[i][j?+?1]?=?0
????return?connectedMatrixweightMatrixderMatrix
class?Network:?#神經網絡類
????def?__init__(self?connectedMatrix?weightMatrix?derMatrix?mN):
????????self.connectedMatrix?=?connectedMatrix
????????self.weightMatrix?=?weightMatrix
????????self.derMatrix?=?derMatrix?#偏導weight矩陣
????????self.success?=?False??#標記網絡是否成功
????????self.m?=?m??#網絡的輸入結點個數
????????self.N?=?N??#網絡的隱藏結點個數
????????self.a?=?[]?#網絡中每個結點的輸出?a=g(z)
????????self.z?=?[]?#網絡中每個結點的輸入
????????self.delta?=?[0]*(N+1)?#L對每個結點(從隱藏結點到輸出結點)輸入的偏導?例如delta[N]表示L對z[m+N]的偏導
????????self.E?=?100?#E即算出的cost值,用作排序
????def?clearderMatrix(self):?#用于清空偏導矩陣,梯度下降時使用
????????N?=?self.N
????????self.derMatrix?=?np.zeros([N?+?1?m?+?N?+?1])
????def?Pretreatment(selfinData):?#預處理,講delta清空,a,z均初始化為輸出數據
????????N?=?self.N
????????self.a?=?[]
????????self.z?=?[]
????????self.delta?=?[0]?*?(N?+?1)
????????self.a.extend(inData)
????????self.z.extend(inData)
????def?forward(self):?#前向傳播,填充a和z
????????N?=?self.N
????????for?i?in?range(N+1):
????????????s?=?-self.weightMatrix[i][0]
????????????for?j?in?range(m+i):
????????????????if?self.connectedMatrix[i][j]?==?1:
????????????????????s?+=?self.weightMatrix[i][j+1]*self.a[j]
????????????self.z.append(s)
????????????s?=?sigmoid(s)
????????????self.a.append(s)
????def?derivatives(selflabel):?#計算偏導,即BP(后向傳播)算法,填充偏導weight矩陣和delta
????????N?=?self.N
????????out?=?self.a[m?+?N]
????????self.delta[N]?=?(out?-?label)?*?out?*?(1-out)
????????self.derMatrix[N][0]?+=?self.delta[N]*(-1)?#填充bias偏導
????????for?j?in?range(m+N):
????????????if?self.connectedMatrix[N][j]?==?1:
????????????????self.derMatrix[N][j+1]?+=?self.delta[N]*self.a[j]
????????i?=?N-1??#?i表示第i個隱藏節點
????????while?i?>=?0:?#從最后一個結點往前
????????????for?j?in?range(i+1N+1):
????????????????if?self.connectedMatrix[j][m+i]?==?1:
????????????????????self.
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-07?22:08??演化ANN\
?????文件??????400868??2018-09-21?17:14??演化ANN\A?new?evolutionary?system?for?evolving?arti?cial?neural?networks.pdf
?????文件??????185245??2018-12-07?22:05??演化ANN\EP.docx
?????文件???????11513??2018-12-05?14:12??演化ANN\EP.py
- 上一篇:四層電梯的PLC控制畢業設計
- 下一篇:佳能打印機維護工具tools
評論
共有 條評論