✅ 操作成功!

rbf神经网络

发布时间:2023-06-11 作者:admin 来源:文学

rbf神经网络

rbf神经网络

-

2023年3月3日发(作者:薄伽梵)

径向基(RBF)神经⽹络python代码实现

importnorm,pinv

frommatplotlibimportpyplotasplt

importnumpy

classRBF:

def__init__(self,indim,numcenters,outdim):

=indim

=outdim

ters=numcenters

s=[m(-1,1,indim)foriinrange(numcenters)]

=8

self.W=((numcenters,outdim))

def_basisfunc(self,c,d):

assertlen(d)==

(-*norm(c-d)**2)

def_calcAct(self,X):

#calculateactivationsofRBFs

G=(([0],ters),float)

forci,cinenumerate(s):

forxi,x0inenumerate(X):

G[xi,ci]=self._basisfunc(c,x0)

returnG

deftrain(self,X,Y):

"""X:matrixofdimensionsnxindim

y:columnvectorofdimensionnx1"""

#chooserandomcentervectorsfromtrainingset

rnd_idx=ation([0])[:ters]

s=[X[i,:]foriinrnd_idx]

print("center",s)

#calculateactivationsofRBFs

G=self._calcAct(X)

print(G)

#calculateoutputweights(pseudoinverse)

self.W=(pinv(G),Y)

deftest(self,X):

"""X:matrixofdimensionsnxindim"""

G=self._calcAct(X)

Y=(G,self.W)

returnY

if__name__=='__main__':

n=100

x=[-1:1:complex(0,n)].reshape(n,1)

#setyandaddrandomnoise

y=(3*(x+0.5)**3-1)

#y+=(0,0.1,)

#rbfregression

rbf=RBF(1,20,1)

(x,y)

z=(x)

#plotoriginaldata

(figsize=(12,8))

(x,y,'k-')

#plotlearnedmodel

(x,z,'r-',linewidth=2)

#plotrbfs

#(s,(ters),'gs')

#(s,(ters),'gs')

#s:

##RFpredictionlines

#cx=(c-0.7,c+0.7,0.01)

#cy=[rbf._basisfunc(([cx_]),([c]))forcx_incx]

#(cx,cy,'-',color='black',linewidth=0.2)

#(-1.2,1.2)

()

👁️ 阅读量:0