數學建模 競爭學習

2021-10-09 08:39:23 字數 2813 閱讀 8965

三個步驟:

向量歸一化

尋找優勝神經元:當網路得到乙個輸入模式時,競爭層所有的神經元對應的權值向量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替換 運籌學問題指的是問題結果是雙方努力的結果 層次分析法最後要進行一致性檢驗,前期可用兩兩比值的方法標準化資料 一般演算法程式都在附件...

學習筆記 數學建模

層次分析法 將與決策總是有關的元素分解成目標,準側和方案等層次,在此基礎之上進行定性和定量分析。使用層次分析法建模,首先要把問題條理化和層次化,構想出乙個有層次的模型。層次分析法建模大體分為三步 建立遞階層次模型 大致分為 目標層 準側層 最低層。將複雜問題分解成構層問題的元素,再對按照元素之間的關...