-
大小: 109KB文件類型: .rar金幣: 2下載: 6 次發(fā)布日期: 2021-06-16
- 語言: C/C++
- 標(biāo)簽: RBF??神經(jīng)網(wǎng)絡(luò)??C++??源碼??
資源簡介
RBF神經(jīng)網(wǎng)絡(luò)和BP神經(jīng)網(wǎng)絡(luò)的C++實(shí)現(xiàn)算法
代碼片段和文件信息
#include“bp_rbf.h“
?double?randnumber()//-0.1~0.1的隨機(jī)函數(shù)?
{
return?(sin(rand())/10)?;
}
//求某個節(jié)點(diǎn)的輸出值
double?f(int?nodeint?layer){
double?sum=0;
for?(int?node2=0;node2yer-1];node2++)
{
????sum=sum+w[layer][node][node2]*u[layer-1][node2];
}
sum=1.0/(1+exp(0-sum));
return?sum;
}
//求誤差函數(shù)對u的導(dǎo)數(shù)
double?gf(int?layerint?node){
double?sum=0;
for?(int?m=0;myer+1];m++)
sum=sum+e[layer+1][m]*u[layer+1][m]*(1-u[layer+1][m])*w[layer+1][m][node];
return?sum;
}
//求前饋
void?feed_forward()//前饋輸出值
{
for?(int?layer=1;layer<=2;layer++)
?for(int?node=0;nodeyer];node++)
?u[layer][node]=f(nodelayer);
}
//求梯度
void?compute_gradient()
{
for?(int?layer=2;layer>0;layer--)
{
??for(int?node=0;nodeyer];node++)
??{
??if?(layer==2)?e[2][node]=u[2][node]-output[node];
??else?e[layer][node]=gf(layernode);
??}
??for?(int?j=0;jyer];j++)
??for(int?i=0;iyer-1];i++)
??{
????????????????g[layer][j][i]=e[layer][j]*u[layer][j]*(1.0-u[layer][j])*u[layer-1][i];??
????? ??
??}
}
}
//修改權(quán)值
void?update_weights()
{
for?(int?layer=1;layer<=2;layer++)
???? for?(int?j=0;jyer];j++)
???? for(int?i=0;iyer-1];i++)
{
?temp_w_1[layer][j][i]=w[layer][j][i];
???????w[layer][j][i]=w[layer][j][i]-STUDY_SPEED*g[layer][j][i]+ALPHA*delta_w[layer][j][i];
???temp_w_2[layer][j][i]=w[layer][j][i];
???delta_w[layer][j][i]=temp_w_2[layer][j][i]-temp_w_1[layer][j][i];
}
}
double?erro()//誤差
{
double?sum=0;
?sum=pow(fabs(u[2][0]-output[0])2)+pow(fabs(u[2][1]-output[1])2)+pow(fabs(u[2][2]-output[2])2);
return?sum;
}
//////////初始化,裝載樣例
void?initial(FILE?*fp)
{
?if(feof(fp))?
?{
?rewind(fp);
??k_k=(++k_k)%7;
??if(!k_k)??fprintf(fpwucha“\n“);
fprintf(fpwucha“%16f“wucha);
?wucha=0;
?}
?input[0]=1.0;
for(int?i=1;i fscanf(fp“%f“input+i);
?
for(i=0;i ???????fscanf(fp“%d“output+i);
// cout< //////////////////////至此讀出一個樣本的數(shù)據(jù)(inputoutput);
for?(int?m=0;m ????u[0][m]=input[m];
}
void?test()
{
FILE?*fpt=NULL;
fpt=fopen(“test.txt““r“);
for?(int?i=0;i<=7;i++)
{
????initial(fpt);
feed_forward();
u[2][0]=floor(u[2][0]+0.5);
????u[2][1]=floor(u[2][1]+0.5);
????u[2][2]=floor(u[2][2]+0.5);
cout<????if(!((output[0]==u[2][0])&&(output[1]==u[2][1])&&(output[2]==u[2][2])))
;
else?
{
count++;
// cout< }
}
fclose(fpt);
}
//////////////RBF的東東///////////////////////////////////////////////////////////////////////
/////////////////////文件定位////////////////////////////////
void??fseeking(FILE*?fpint?row_no)
{??
rewind(fp);
if?(!row_no)?return;
??l:while((!feof(fp))&&(fgetc(fp)!=‘\n‘))
{
file_time++;
};
????//if(feof(fp))?return;
row_no--;
if?(row_no)?goto?l;?
???else return;
}???????
?////徑向距離/////
void?min_juli(int?*set_numbe
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4379??2005-06-01?14:40??bp_rbf\bisheji.dsp
?????文件????????537??2005-05-17?08:52??bp_rbf\bisheji.dsw
?????文件??????66560??2005-06-01?19:23??bp_rbf\bisheji.ncb
?????文件??????54784??2005-06-01?19:23??bp_rbf\bisheji.opt
?????文件????????248??2005-06-01?19:23??bp_rbf\bisheji.plg
?????文件???????1371??2005-06-01?18:04??bp_rbf\bp_rbf.h
?????文件??????20953??2005-06-01?18:08??bp_rbf\bp結(jié)果\權(quán)值.txt
?????文件????????570??2005-06-01?18:08??bp_rbf\bp結(jié)果\誤差變化序列.txt
?????文件??????13210??2005-06-01?19:23??bp_rbf\mainApp.cpp
?????文件???????3559??2005-05-18?09:14??bp_rbf\matrix_op.h
?????文件?????????78??2005-05-23?09:40??bp_rbf\rbf.cpp
?????文件??????20526??2005-06-01?18:08??bp_rbf\rbf結(jié)果\權(quán)值.txt
?????文件?????318582??2005-06-01?18:08??bp_rbf\rbf結(jié)果\誤差.txt
?????文件??????21766??2005-06-01?15:11??bp_rbf\study.txt
?????文件???????7254??2005-06-01?14:45??bp_rbf\test.txt
?????目錄??????????0??2005-05-23?13:22??bp_rbf\bp結(jié)果
?????目錄??????????0??2005-05-18?17:13??bp_rbf\Debug
?????目錄??????????0??2005-05-28?23:21??bp_rbf\rbf結(jié)果
?????目錄??????????0??2005-05-18?17:13??bp_rbf
-----------?---------??----------?-----??----
???????????????534377????????????????????19
評論
共有 條評論