資源簡介
本資源采用自組織學習獲取中心和有監督學習獲取中心兩種方式訓練RBF神經網絡,支持多維函數逼近,支持批量訓練,具有較好的封裝性,使用非常簡便

代碼片段和文件信息
import?tensorflow?as?tf
import?numpy?as?np
from?sklearn.cluster?import?KMeans
class?RBF:
????#初始化學習率、學習步數
????def?__init__(selflearning_rate=0.002step_num=10001hidden_size=10):
????????self.learning_rate=learning_rate
????????self.step_num=step_num
????????self.hidden_size=hidden_size
????
????#使用?k-means?獲取聚類中心、標準差
????def?getC_S(selfxclass_num):
????????estimator=KMeans(n_clusters=class_nummax_iter=10000)?#構造聚類器
????????estimator.fit(x)?#聚類
????????c=estimator.cluster_centers_
????????n=len(c)
????????s=0;
????????for?i?in?range(n):
????????????j=i+1
????????????while?j ????????????????t=np.sum((c[i]-c[j])**2)
????????????????s=max(st)
????????????????j=j+1
????????s=np.sqrt(s)/np.sqrt(2*n)
????????return?cs
????
????#高斯核函數(c為中心,s為標準差)
????def?kernel(selfxcs):
????????x1=tf.tile(x[1self.hidden_size])?#將x水平復制?hidden次
????????x2=tf.reshape(x1[-1self.hidden_sizeself.feature])
????????dist=tf.reduce_sum((x2-c)**22)
????????return?tf.exp(-dist/(2*s**2))
????
????#訓練RBF神經網絡
????def?train(selfxy):
????????self.feature=np.shape(x)[1]?#輸入值的特征數
????????self.cself.s=self.getC_S(xself.hidden_size)?#獲取聚類中心、標準差
????????
????????x_=tf.placeholder(tf.float32[Noneself.feature])?#定義placeholder
????????y_=tf.placeholder(tf.float32[None1])?#定義placeholder
????????
????????#定義徑向基層
????????z=self.kernel(x_self.cself.s)??
????
????????#定義輸出層
????????w=tf.Variable(tf.random_normal([self.hidden_size1]))
????????b=tf.Variable(tf.zeros([1]))
????????yf=tf.matmul(zw)+b
????????
????????loss=tf.reduce_mean(tf.square(y_-yf))#二次代價函數
????????optimizer=tf.train.AdamOptimizer(self.learning_rate)?#Adam優化器?????
????????train=optimizer.minimize(loss)?#最小化代價函數
????????init=tf.global_variables_initializer()?#變量初始化
????
????????with?tf.Session()?as?sess:
????????????sess.run(init)
????????????for?epoch?in?range(self.step_num):
????????????????sess.run(trainfeed_dict={x_:xy_:y})
????????????????if?epoch>0?and?epoch%500==0:
????????????????????mse=sess.run(lossfeed_dict={x_:xy_:y})
????????????????????print(epochmse)
????????????self.wself.b=sess.run([wb]feed_dict={x_:xy_:y})
????????
????def?kernel2(selfxcs):?#預測時使用
????????x1=np.tile(x[1self.hidden_size])?#將x水平復制?hidden次
????????x2=np.reshape(x1[-1self.hidden_sizeself.feature])
????????dist=np.sum((x2-c)**22)
????????return?np.exp(-dist/(2*s**2))
????
????def?predict(selfx):
????????z=self.kernel2(xself.cself.s)
????????pre=np.matmul(zself.w)+self.b
????????return?pre
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-11-17?15:32??RBF案例\
?????文件????????2790??2019-11-28?10:53??RBF案例\RBF_kmeans.py
?????文件????????2314??2019-11-28?10:44??RBF案例\RBF_Supervised.py
?????文件?????????831??2019-11-28?10:50??RBF案例\test_kmeans.py
?????文件????????1090??2019-11-28?11:00??RBF案例\test_kmeans2.py
?????文件?????????837??2019-11-28?10:59??RBF案例\test_Supervised.py
?????文件????????1094??2019-11-28?11:06??RBF案例\test_Supervised2.py
?????目錄???????????0??2019-11-28?11:06??RBF案例\__pycache__\
?????文件????????1439??2019-11-17?15:25??RBF案例\__pycache__\RBF.cpython-37.pyc
?????文件????????2611??2019-11-28?10:54??RBF案例\__pycache__\RBF_kmeans.cpython-37.pyc
?????文件????????2175??2019-11-28?11:06??RBF案例\__pycache__\RBF_Supervised.cpython-37.pyc
評論
共有 條評論