




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BP神经网络算法的C语言实现代码/BP神经网络算法,c语言版本/VS2010下,无语法错误,可直接运行添加了简单注释欢迎学习交流#include <stdlib.LayerNum>#include <math.LayerNum>#include <stdio.LayerNum>#include <time.LayerNum>#define N_Out 2输出向量维数#define N_In 3 隔入向量维数#define N_Sample 6 样本数量/BP人工神经网络typedef struct(int Lay er Num;中间层数量doub
2、le vN_In50; 中间层权矩阵i,中间层节点最大数量为50double w50N_Out;输出层权矩阵double Study Rate;学习率double Accuracy;int MaxLoop;精度控制参数最大循环次数 BPNet;/Sigmoid 函数double fnet(double net)(return l/(l+exp(-net);) 初始化int InitBpNet(BPNet *BP);/训练BP网络,样本为x,理想输出为yint Tr ainBpN et(BPN et *BP, double xN_Sampleint yN_Sample |N_Out|);使用BP
3、网络int UseBpNet(BPNet *BP);主函数int main()训练样本double xN_SampleN_In = 08,0.5,0, 09,07。3,1,0.8,0.5,0,0.2,0.3, 02,01,1.3, 0.2,0.7,0.8;理想输出int y N_Sample N_Out = 0,1,0,1, 0,1, 1,1, 1,0, 1,0);初始化BP网络BPNet BP;InitBpNet(&BP);结构TrainBpNet(&BP, x, y); 训练 BP 神经网络UseBpNet(&BP);测试 BP 神经网络return 1;)使用BP
4、网络int UseBpNet(BPNet *BP)(double InputN_In;double Out 1 50;double Out2N_Out; /Outl 为中间层输出Qut2为输出层输出持续执行,除非中断程序while (1)printfC请输入3个数:nn);int ij;for (i = 0; i < N_In; i+)scanf_s(n%r &Inputi);double Tmp;for (i = 0; i < (*BP).LayerNum; i+)|Tmp = 0;for (j = 0; j < N_In; j+)Tmp += Inputs *Ou
5、tli = fnet(Tmp);)for (i = 0; i < N_Out; i+)(Tmp = 0;for (j = 0; j < (*BP).LayerNum; j+)Tmp += Outlj * (*BP).w皿i;Out2i = fnet(Tmp);)printfC 结果: n);for (i = 0; i < N_Out; i+)printf(H%.3f H,Out2i);printf(nnn);)return 1;)训练BP网络,样本为x,理想输出为yintTrainBpN et (BPN et*BP, doublexN_SampleN_In, int yN_S
6、ample N_Out)double f = (*BP).Accuracy;精度学控制参数double a = (BP).StudyRate;习率int LayerNum = (*BP).LayerNum; 中间层节 点数double vN_In50, w50N_Out; 权矩阵double ChgH50, ChgON_Out;/修改量矩阵double Outl50, Out2N_Out; 中间层和输 出层输出量int MaxLoop(*BP).MaxLoop;最大循环次数int n;double Tmp;for (i = 0; i < N_In; i+)/复制结构体中的权 矩阵for
7、(j = 0; j < LayerNum; j+)viU = (*BP).viU;for (i = 0; i < LayerNum; i+)for (j = 0; j < N_Out; j+)Wij = (*BP).wij;double e = f + 1;对每个样本训练网络for (n = 0; e > f && n < MaxLoop; n+) (e = 0;for (i= 0; i < N_Sample; i+)计算中间层输出向量for (k= 0; k < LayerNum; k+)Tmp = 0;for (j = 0; j &
8、lt; N_In; j+)Tmp = Tmp + xij*vjk;Outlk = fnet(Tmp);)计算输出层输出向量for (k = 0; k < N_Out; k+)Tmp = 0;for (j = 0; j < LayerNum; j+)Tmp = Tmp + Outlj * wjk;Out2k = fnet(Tmp);)计算输出层的权修改量for (j = 0; j < N_Out; j+)ChgOj = Out2j * (1 - Out2j) * (yiU - Out2U); 计算输出误差 for (j = 0; j < N_Out; j+)e = e +
9、 (yiU - Out2j) * (yiU-Out2UD;计算中间层权修改量for (j = 0; j < LayerNum; j+)Tmp = 0;for (k = 0; k < N_Out; k+)Tmp = Tmp + wjk * ChgOk;ChgHj = Tmp * Outlj * (1 - Outiui); )修改输出层权矩阵for (j = 0; j < LayerNum; j+)for (k = 0; k < N_Out; k+)wjk = wjk + a * Outlj * ChgOk;for (j = 0; j < N_In; j+)for (
10、k = 0; k < LayerNum; k+) vUk = v皿k + a * xiU * ChgHk;)if (n % 10 = 0)printf("误差:e);)printf("总共循环次数:%dnf n);printf("调整后的中间层权矩阵:nn);for (i = 0; i < N_In; i+)for (j = 0; j < LayerNum; j+) printf(n%f vij);printf(nnn);)printfC调整后的输出层权矩阵:n");for (i = 0; i < LayerNum; i+) fo
11、r (j = 0; j < N_Out; j+) printf(n%f wij);printf(nnn);)把结果复制回结构体for (i = 0; i < N_In; i+)for (j = 0; j < LayerNum; j+) (*BP).vij = vij;for (i = 0; i < LayerNum; i+)for (j = 0; j < N_Out; j+) (*BP).wij = wij;printfBP网络训练结束! nn);return 1;初始化int InitBpNet(BPNet *BP)printf请输入中间层节点数,最大数为100
12、:W'');scanf_s(M %d' &(*BP)>LayerNum);printf(1,请输入学习率:n“);scanf_s(n %lf&(BP).StudyRate);/(BP).StudyRate为double型数据,所以必须 是Ifprintf("请输入精度控制参数:nn);scanf_s(M %IF &(*BP)>Accuracy);printf请输入最大循环次数:n");scanf_s(n%dM, &(*BP).MaxLoop);int ij;srand(unsigned)time(NULL);for (i = 0; i < N_In; i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂场合同转让协议书模板
- 动产赠与合同协议书模板
- 公司项目委托宣传协议书
- 变更法人的合同补充协议
- 协议书可以包括经济合同
- 加工车间安全生产协议书
- 仓库改建书画室合同范本
- 公司劳动合同的附加协议
- 俱乐部设备转让合同范本
- 企业拆迁门面转让协议书
- 《尿液红细胞及形态》课件
- 2019人教版高中英语必修三单词表带音标
- 一例臀部巨大脓肿切开引流患者的个案护理汇报课件
- 液化石油气机械修理工施工质量管控详细措施培训
- 中建挂篮悬臂浇筑箱梁施工方案
- JCT2199-2013 泡沫混凝土用泡沫剂
- 创业的励志格言80句
- 加油站主要生产设备清单
- 国寿新绿洲团体意外伤害保险(A款)条款
- 人工流产的护理(妇产科护理课件)
- 安全生产标准化实施情况评定纠正措施落实记录
评论
0/150
提交评论