BP神经网络的C语言汇总

上传人:工**** 文档编号:464705388 上传时间:2023-04-02 格式:DOC 页数:52 大小:179KB
返回 下载 相关 举报
BP神经网络的C语言汇总_第1页
第1页 / 共52页
BP神经网络的C语言汇总_第2页
第2页 / 共52页
BP神经网络的C语言汇总_第3页
第3页 / 共52页
BP神经网络的C语言汇总_第4页
第4页 / 共52页
BP神经网络的C语言汇总_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《BP神经网络的C语言汇总》由会员分享,可在线阅读,更多相关《BP神经网络的C语言汇总(52页珍藏版)》请在金锄头文库上搜索。

1、#include stdio.h#include stdlib.h#include time.h#include math.h/*inpoints 为输入神经元个数,可改变outpoints为输出神经元个数defaultpoints为隐层神经元个数datagrough为样本数据个数*以下数据定义可以修改*/#define A 0#define a 1#define b 1#define c 1#define ALFA 0.85 #define BETA 0.2 /学习率01#define Total 20000#define inpoints 9#define outpoints 5#defi

2、ne defaultpoints 28#define datagrough 44#define forecastdata 4/*定义所需变量*/double InpointDatadatagroughinpoints,OutpointDatadatagroughoutpoints; /* 输入输出数据 */double InpointData_MAXinpoints,InpointData_MINinpoints; /* 每个因素最大数据 */double OutpointData_MAXoutpoints,OutpointData_MINoutpoints; /* 每个因素最小数据 */do

3、uble wdefaultpointsinpoints,limendefaultpoints,voutpointsdefaultpoints; /* 连接权值、阈值 */double dlta_wdefaultpointsinpoints,dlta_limendefaultpoints,dlta_voutpointsdefaultpoints; /* 连接权、阈值修正值 */double defaultOutpointdefaultpoints,Outpoint_dpoutpoints,Outpoint_epdatagrough;/*读数据文件*/void ReadData()FILE *fp

4、1,*fp2;int i,j;if(fp1=fopen(D:data训练输入.txt,r)=NULL)printf(1can not open the filen);exit(0);for(i=0;idatagrough;i+)for(j=0;jinpoints;j+)fscanf(fp1,%lf,&InpointDataij); fclose(fp1);if(fp2=fopen(D:data训练输出.txt,r)=NULL)printf(2can not open the filen);exit(0);for(i=0;idatagrough;i+)for(j=0;joutpoints;j+)

5、fscanf(fp2,%lf,&OutpointDataij); fclose(fp2);/*/*归一化*/void unitary()int i,j;int k=0;for(j=0;jinpoints;j+) /找出每列的最大、最小值存放在数组InpointData_MAXj、InpointData_MINj中 InpointData_MAXj=InpointData0j; InpointData_MINj=InpointData0j; for(i=0;idatagrough;i+) if(InpointData_MAXjInpointDataij) InpointData_MINj=Inp

6、ointDataij;for(j=0;joutpoints;j+) /找出每列的最大、最小值存放在数组OutpointData_MAXj、OutpointData_MINj中 OutpointData_MAXj=OutpointData0j; OutpointData_MINj=OutpointData0j; for(i=0;idatagrough;i+) if(OutpointData_MAXjOutpointDataij) OutpointData_MINj=OutpointDataij;/*将数据归一处理,处理之后的数据全部在0,1之间*/for(j=0;jinpoints;j+) fo

7、r(i=0;idatagrough;i+) if(InpointData_MAXj=0) InpointDataij=0; else InpointDataij=(InpointDataij-InpointData_MINj+A)/(InpointData_MAXj-InpointData_MINj+A);for(j=0;joutpoints;j+) for(i=0;idatagrough;i+) if(OutpointData_MAXj=0) OutpointDataij=0; else OutpointDataij=(OutpointDataij-OutpointData_MINj+A)/

8、(OutpointData_MAXj-OutpointData_MINj+A);/*/*初始化,随机赋初值*/void Initialization()int i,j; srand(unsigned)time(NULL); /头文件名 #include for(i=0;idefaultpoints;i+) /给输入层到隐层的连接权赋随机值LianJie_wij,这些值在0,1 for(j=0;jinpoints;j+) wij=(rand()*2.0/RAND_MAX-1)/2; dlta_wij=0;for(i=0;idefaultpoints;i+)limeni=(rand()*2.0/R

9、AND_MAX-1)/2; dlta_limeni=0;for(i=0;ioutpoints;i+) /给隐层到输出层的连接权赋初值for(j=0;jdefaultpoints;j+) vij=(rand()*2.0/RAND_MAX-1)/2; dlta_vij=0;/*求单样本的计算输出误差*/void out_sub1(int t)int i,j;double defaultInpointdefaultpoints;double Outpoint_youtpoints; Outpoint_ept=0;for(i=0;idefaultpoints;i+)double sum=0;for(j

10、=0;jinpoints;j+)sum+=wij*InpointDatatj;defaultInpointi=sum+limeni;defaultOutpointi=1/(a+b*exp(-1*c*defaultInpointi);/求Oifor(j=0;joutpoints;j+)/求YiOutpoint_yj=0;for(i=0;idefaultpoints;i+)Outpoint_yj+=vji*defaultOutpointi;Outpoint_dpj=OutpointDatatj-Outpoint_yj; Outpoint_ept+=Outpoint_dpj*Outpoint_dpj/2;/*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号