资源简介
RBF神经网络和BP神经网络的C++实现算法
代码片段和文件信息
#include“bp_rbf.h“
double randnumber()//-0.1~0.1的随机函数
{
return (sin(rand())/10) ;
}
//求某个节点的输出值
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;
}
//求误差函数对u的导数
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];
}
}
}
//修改权值
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< //////////////////////至此读出一个样本的数据(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结果\权值.txt
文件 570 2005-06-01 18:08 bp_rbf\bp结果\误差变化序列.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结果\权值.txt
文件 318582 2005-06-01 18:08 bp_rbf\rbf结果\误差.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结果
目录 0 2005-05-18 17:13 bp_rbf\Debug
目录 0 2005-05-28 23:21 bp_rbf\rbf结果
目录 0 2005-05-18 17:13 bp_rbf
----------- --------- ---------- ----- ----
534377 19
- 上一篇:模拟银行排队叫号机 VC++6
- 下一篇:SEGD文件读取C++源代码
相关资源
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
- GBT 28169-2011 嵌入式软件 C语言编码规范
- c++ 猜拳小游戏
- XUnZip Zip解压缩.rar
评论
共有 条评论