三個步驟:
向量歸一化
尋找優勝神經元:當網路得到乙個輸入模式時,競爭層所有的神經元對應的權值向量wj(i=1,2,3…m)均與x進行比較,將與x最為相似的wi判定為獲勝神經元。測量相似性的方法是對wi與x計算歐式距離(或夾角余弦)。
網路輸出與權值調整
以下:一、競爭網路
import numpy as np
defsigmoid
(x,derivative=
false):
#啟用函式
return1/
(1+np.exp(
-x))
defnormalization
(m):
""" 對行向量進行歸一化
:param m:行向量:【dim=len(m)】
:return: 歸一化後的行向量m
"""m=m/np.sqrt(np.dot(m,m.t)
)# np.dot()是向量內積
return m
defnormalization_all
(n):
""" 對矩陣進行歸一化
:param n: 矩陣:【m,n】
:return: 歸一化後的矩陣m_all:【m,n】
"""m_all=
for i in
range
(len
(n))
: k=normalization(n[i]
)return m_all
class
competitive_network
(object):
def__init__
(self,x_dim,c_dim,a)
: w=np.random.rand(c_dim,x_dim)*(
-2)+
1 self.w=normalization_all(w)
self.a=a
defforward_propagation
(self,x)
: x=x.reshape(
1,x.shape[0]
) z_layer=np.dot(self.w,x.t)
a_layer=sigmoid(z_layer)
argmax=np.where(a_layer==np.amax(a_layer))[
0][0
]return argmax
defback_propagation
(self,argmax,x)
: self.w[argmax]
= self.a *
(x - self.w[argmax]
) self.w[argmax]
=normalization(self.w[argmax]
) self.a-=self.decay
deftrain
(self,x,num_item)
: x=np.array(x)
self.decay=self.a/num_item
for item in
range
(num_item)
:for i in
range
(x.shape[0]
):argmax=self.forward_propagation(x[i]
) self.back_propagation(argmax,x[i]
)def
prediction
(self,x)
: argmax=self.forward_propagation(x)
return argmax
二、測試
from c_network import
*import matplotlib.pyplot as plt
datamat=np.random.rand(
100,2)
*(-2
)+1print
(datamat)
assert
(datamat.shape==
(100,2
))c=[
]cn=competitive_network(2,
2,0.1)
cn.train(datamat,
1000
)for i in
range
(len
(datamat)):
prediction=cn.prediction(datamat[i])30
)datamat=normalization_all(datamat)
datamat=np.array(datamat)
plt.figure(
)plt.scatter(datamat[:,
0],datamat[:,
1],c=c)
plt.xlim(
-1.2
,1.2
)plt.ylim(
-1.2
,1.2
)plt.show(
)
[1]競爭學習演算法原理
[2]第二篇 強推
數學建模學習心得 建模教程
2.2準備電腦基本軟體 2.3 跟學校請假宣告 2.4 隊友分工 2.5 賽前說明 2.6 比賽場地 3 建模期間 我以國賽建模過程舉例 3.3 查重 3.4 及時交 4 建模全過程技巧 5 我的建模感受 6 推薦博文 7 結束語 前言 編輯初衷是教會我小夥伴兩三天上手基本的建模操作,因為建模有創新...
數學建模學習筆記一
評價模型要先將資料標準化處理 模型最後最好有檢驗和靈敏度分析 多目標規劃問題要考慮多種因素之間的影響,最後轉變為線性規劃 linprog命令 指派問題首先進行0 1替換 運籌學問題指的是問題結果是雙方努力的結果 層次分析法最後要進行一致性檢驗,前期可用兩兩比值的方法標準化資料 一般演算法程式都在附件...
學習筆記 數學建模
層次分析法 將與決策總是有關的元素分解成目標,準側和方案等層次,在此基礎之上進行定性和定量分析。使用層次分析法建模,首先要把問題條理化和層次化,構想出乙個有層次的模型。層次分析法建模大體分為三步 建立遞階層次模型 大致分為 目標層 準側層 最低層。將複雜問題分解成構層問題的元素,再對按照元素之間的關...