bp神经网络c语言实现,BP神经网络C语言实现.doc

BP神经网络C语言实现

BP神经网络C语言实现

#include "iostream.h"

#include "iomanip.h"

#include "stdlib.h"

#include "math.h"

#include "stdio.h"

#include "time.h"

#include "fstream.h"

#define N 11 //学习样本个数

#define IN 5 //输入层神经元数目

#define HN 8 //隐层神经元数目

#define HC 3 //隐层层数

#define ON 3 //输出层神经元数目

#define Z 200000 //旧权值保存-》每次study的权值都保存下来

double P[IN]; //单个样本输入数据

double T[ON]; //单个样本教师数据

double U11[HN][IN]; //输入层至第一隐层权值

double U12[HN][HN]; //第一隐层至第二隐层权值

double U23[HN][HN]; //第二隐层至第三隐层权值

double V[ON][HN]; //第三隐层至输出层权值

double X1[HN]; //第一隐层的输入

double X2[HN]; //第二隐层的输入

double X3[HN]; //第三隐层的输入

double Y[ON]; //输出层的输入

double H1[HN]; //第一隐层的输出

double H2[HN]; //第二隐层的输出

double H3[HN]; //第三隐层的输出

double O[ON]; //输出层的输出

double YU_HN1[HN]; //第一隐层的阈值

double YU_HN2[HN]; //第二隐层的阈值

double YU_HN3[HN]; //第三隐层的阈值

double YU_ON[ON]; //输出层的阈值

double err_m[N]; //第m个样本的总误差

double a; //学习效率

double alpha; //动量因子

//定义一个放学习样本的结构

struct {

double input[IN]; //输入在上面定义是五个

double teach[ON]; //输出在上面定义是三个

}Study_Data[N];//学习样本

//bp算法用来保存每次计算的权值

struct {

double old_U11[HN][IN]; //保存输入层至隐层权值旧权

double old_U12[HN][HN]; //保存第一隐层至第二隐层权值

double old_U23[HN][HN]; //保存第二隐层至第三隐层权值

double old_V[ON][HN]; //保存第三隐层至输出层旧权

}Old_WV[Z];

saveWV(int m)

{

for(int i=0;i

{

for(int j=0;j

{

Old_WV[m].old_U11[i][j] = U11[i][j];

}

}

for(int i1=0;i1

{

for(int j1=0;j1

{

Old_WV[m].old_U12[i1][j1] = U12[i1][j1];

}

}

for(int i2=0;i2

{

for(int j2=0;j2

{

Old_WV[m].old_U23[i2][j2] = U23[i2][j2];

}

}

for(int i3=0;i3

{

for(int j3=0;j3

{

Old_WV[m].old_V[i3][j3] = V[i3][j3];

}

}

return 1;

}

///

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值