📄 bpnetwork.h
字号:
// BpNetwork.h: interface for the CBpNetwork class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BPNETWORK_H__635C5CD6_061B_4BDF_96A7_0DC80501D50D__INCLUDED_)
#define AFX_BPNETWORK_H__635C5CD6_061B_4BDF_96A7_0DC80501D50D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "matlib.h"
class CBpNetwork
{
public:
CBpNetwork();
void create(Mm mInputData, Mm mTarget, int input, int hidden, int output);//创建网络
double randData(double a, double b);//随机数
virtual ~CBpNetwork();
void stop();//停止训练
void learn();//学习
private:
int input;//输入个数
int hidden;//隐层神经元个数
int output;//输出个数
protected:
Mm mInput;//单个样本输入数据
Mm mSampleInput;//全体样本输入数据
Mm mSampleTarget;//全体目标数据
Mm mHidden;//计算得到的隐层数据
Mm mOutput;//计算得到输出层的数据
Mm mWeighti;//输入-隐层权重
Mm mWeighto;//隐层-输出权重
protected:
Mm mThresholdi;//偏置值
Mm mThresholdo;
Mm mOutputDeltas;//误差
Mm mHiddenDeltas;
protected:
bool m_isOk;
bool m_isStop;
double learnRate1;//学习速度
double learnRate2;
protected:
void backward(int iSample);//反向传播
void forward(int iSample);//前馈
double f(double temp);//激活函数
double f_1(double temp);//激活函数导数
void save();//保存权值和偏置值
Mm changeMm(Mm temp);//矩阵转置
private:
double dblError;//误差
double dblMse;//误差限
};
#endif // !defined(AFX_BPNETWORK_H__635C5CD6_061B_4BDF_96A7_0DC80501D50D__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -