BP神经网络原理分析及c++代码实现(下)

本部分主要是BP神经网络的C++代码部分,在这里简单的介绍下代码的头文件,具体代码的实现以及测试数据,请在csdn资源里下载:http://download.csdn.net/detail/hjkhjk007/5503911

为了方便广大用户的使用,本人将BP神经网络写成了一个BPNNS类,这样用户们可以很方便的将此类潜入到自己的工程当中,此类的具体的使用规则,下面会介绍。

/***************************************************************************
* 文件名称:BPNNs.h
* 摘    要:BP神经网络
* 作    者:黄继昆
*
* 修改记录:
*[日期]     [作者/修改者] [修改原因]
*2012.7.14	    黄继昆    	添加
***************************************************************************/
#pragma once
#include <stdio.h>
#include <math.h>

//算法
#define    traingd                      0                  // 基本的梯度下降算法
#define    traingdm                     1                  // 增加动量项的梯度下降算法
#define    traingdx                     2                  // 动量及自适应学习速率的梯度下降算法
#define    traincgf                     3                  // 共轭梯度算法
#define    trainrp                      4                  // 弹性BP算法
//使用的传递函数
#define     SIGMOID                     10                 // sigmoid 函数
#define     PURLINE                     11                 // purelin函数
// 神经网络 类型
#define     BP                          12                 //bp神经网络
#define     ITEMS                       13
#define     MAXWEIGHT                  ((float)0.3)
#define     SCALEWEIGHT                ((float)32767)
typedef  float *PFLOAT;
typedef  PFLOAT VECTOR;
typedef  PFLOAT *MATRIX;


//创建BP神经网络参数结构体
typedef struct _NNS_CREACTE
{

    
	 int   InputNodes;                // 输入层节点数
	 int   HiddenLayers;              // 隐层数
	 int   *HiddenNodes;              // 各隐层的节点数
	 int   OutputNodes;               // 输出层节点数
	 int   Patterns;                  // 训练实例数
	 

}BPNNS_CreateInfo,*pBPNNS_CreateInfo;
//训练神经网络参数结构体
typedef struct _NNS_TRAIN
{
	int   TrainMethod;               // 训练中使用的算法
	int   OLTF;                      // OutputLayerTransferFunc输出层使用的传递函数
	int   HLTF;                      // HindderLayerTransferFunc隐层使用的传递函数
	int   Iterations;                // 训练次数
	float ErrorLeve;                 // 误差级别
	float eta;                       // 定义学习速率(步长)
	float alpha;                     // 定义动量因子(该值在有动量的梯度下降算法当中才有效)

}BPNNS_TrainInfo,*pBPNNS_TrainInfo;

class CBPNNs
{
	
public:
	CBPNNs(void);

 public:
 	CBPNNs(BPNNS_CreateInfo CreateInfo);

public:
	~CBPNNs(void);
public:
//构造网络
	                                                   
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值