没有合适的资源?快使用搜索试试~ 我知道了~
用c++编写的神经网络的训练,包括调整权值,阈值,计算误差,输入信号等子程序
资源推荐
资源详情
资源评论
//该程序是用来训练神经网络的,在确定好神经网络的结构后用该程序来调节网络的权值,阈值等各种参数直至满足误差要求为止.然后程序保存训练完成的参数,作为一个已训练完成的神经网络来使用.
//
//
//基于C开发的三个隐层神经网络,输出权值、阈值文件,训练样本文件,提供如下函数:
//1)初始化权、阈值子程序;
//2)第m个学习样本输入子程序;
//3)第m个样本教师信号子程序;
//4)隐层各单元输入、输出值子程序;
//5)输出层各单元输入、输出值子程序;
//6)输出层至隐层的一般化误差子程序;
//7)隐层至输入层的一般化误差子程序;
//8)输出层至第三隐层的权值调整、输出层阈值调整计算子程序;
//9)第三隐层至第二隐层的权值调整、第三隐层阈值调整计算子程序;
//10)第二隐层至第一隐层的权值调整、第二隐层阈值调整计算子程序;
//11)第一隐层至输入层的权值调整、第一隐层阈值调整计算子程序;
//12)N个样本的全局误差计算子程序。
#include "iostream.h"
#include "iomanip.h"
#include "stdlib.h"
#include "math.h"
#include "stdio.h"
#include "time.h"
#include "fstream.h"
#define N 800 //学习样本个数
#define IN 3 //输入层神经元数目
#define HN 8 //隐层神经元数目
//
//
//基于C开发的三个隐层神经网络,输出权值、阈值文件,训练样本文件,提供如下函数:
//1)初始化权、阈值子程序;
//2)第m个学习样本输入子程序;
//3)第m个样本教师信号子程序;
//4)隐层各单元输入、输出值子程序;
//5)输出层各单元输入、输出值子程序;
//6)输出层至隐层的一般化误差子程序;
//7)隐层至输入层的一般化误差子程序;
//8)输出层至第三隐层的权值调整、输出层阈值调整计算子程序;
//9)第三隐层至第二隐层的权值调整、第三隐层阈值调整计算子程序;
//10)第二隐层至第一隐层的权值调整、第二隐层阈值调整计算子程序;
//11)第一隐层至输入层的权值调整、第一隐层阈值调整计算子程序;
//12)N个样本的全局误差计算子程序。
#include "iostream.h"
#include "iomanip.h"
#include "stdlib.h"
#include "math.h"
#include "stdio.h"
#include "time.h"
#include "fstream.h"
#define N 800 //学习样本个数
#define IN 3 //输入层神经元数目
#define HN 8 //隐层神经元数目
#define HC 1 //隐层层数
#define ON 1 //输出层神经元数目
#define Z 200000 //旧权值保存-》每次study的权值都保存下来
double P[IN]; //单个样本输入数据
double T[ON]; //单个样本教师数据
double U[HN][IN]; //输入层至隐层的权值
double V[ON][HN]; //隐层至输出层的权值
double X[HN]; //隐层的输入
double Y[ON]; //输出层的输入
double H[HN]; //隐层的输出
double O[ON]; //输出层的输出
double YU_HN[HN]; //隐层的阈值
double YU_ON[ON]; //输出层的阈值
double err_m[N]; //第m个样本的总误差
double a; //学习效率
double alpha; //动量因子
//定义一个放学习样本的结构
struct {
double input[IN]; //输入在上面定义是3个
double teach[ON]; //输出在上面定义是1个
}Study_Data[N];//学习样本
//bp算法用来保存每次计算的权值
struct {
double old_U[HN][IN]; //保存输入层至隐层权值旧权
double old_V[ON][HN]; //保存隐层至输出层旧权
}Old_WV[Z];
///////////////////////////
#define ON 1 //输出层神经元数目
#define Z 200000 //旧权值保存-》每次study的权值都保存下来
double P[IN]; //单个样本输入数据
double T[ON]; //单个样本教师数据
double U[HN][IN]; //输入层至隐层的权值
double V[ON][HN]; //隐层至输出层的权值
double X[HN]; //隐层的输入
double Y[ON]; //输出层的输入
double H[HN]; //隐层的输出
double O[ON]; //输出层的输出
double YU_HN[HN]; //隐层的阈值
double YU_ON[ON]; //输出层的阈值
double err_m[N]; //第m个样本的总误差
double a; //学习效率
double alpha; //动量因子
//定义一个放学习样本的结构
struct {
double input[IN]; //输入在上面定义是3个
double teach[ON]; //输出在上面定义是1个
}Study_Data[N];//学习样本
//bp算法用来保存每次计算的权值
struct {
double old_U[HN][IN]; //保存输入层至隐层权值旧权
double old_V[ON][HN]; //保存隐层至输出层旧权
}Old_WV[Z];
///////////////////////////
剩余13页未读,继续阅读
资源评论
tuoyanjing
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功