资源简介
使用面向对象的C++实现了BP神经网络,压缩包中一共6个文件,在vs2008中调试通过。程序运行的数据从文本文件中数输入。代码中有详细解释。
代码片段和文件信息
/*
文件名:bp.cpp
*/
#include “BP.h“
#include
#include
using namespace std;
CBP::CBP(void)
{
}
CBP::~CBP(void)
{
}
ostream& operator<<(ostream& outCBP& bp)
{
out<<“样本输入向量:“< out<
out<<“样本输出向量:“< out<
out<<“隐层权矩阵:“< out<
out<<“输出层权矩阵:“< out<
out<<“隐层输出:“< out<
out<<“输出层输出:“< out<
out<<“输出层修改量:“< out<
out<<“隐层修改量:“< out< cout<<“-------------------------------------------------------------“<
return out;
}
void CBP::ReadDataFromFile(char *filename)
{
ifstream in(filename);
in>>m_epslon;
in>>m_alpha;
in>>m_MaxIterativeTimes;
in>>m_H;
in>>m_n;
in>>m_m;
in>>m_samples;
m_SamplesInput.ResetSize(m_samplesm_n);
m_SamplesOut.ResetSize(m_samplesm_m);
in>>m_SamplesInput>>m_SamplesOut;
in.close();
m_w.ResetSize(m_Hm_m);
m_v.ResetSize(m_nm_H);
m_o1.ResetSize(1m_H);
m_o2.ResetSize(1m_n);
m_deltaO.ResetSize(1m_m);
m_deltaH.ResetSize(1m_H);
m_x.ResetSize(1m_n);
m_y.ResetSize(1m_m);
}
void CBP::Trainning(void)
{
double E=m_epslon+1;//循环控制参数
double N=0;//循环计数
//初始化权矩阵
m_w.initweight();//输出权
m_v.initweight();//隐层权
while(E>m_epslon && N {
N++;
E=0;
//对每一个样本进行如下操作
for(int l=0;l {
m_x.Copy(m_SamplesInputl);
m_y.Copy(m_SamplesOutl);
m_o1=CMatrix::F(m_x*m_v);
m_o2=CMatrix::F(m_o1*m_w);
//cout<<*this;
//计算输出层权修改量
for(int i=0;i {
m_deltaO[0][i]=m_o2[0][i]*(1-m_o2[0][i])*(m_y[0][i]-m_o2[0][i]);
}
//计算输出误差
for(int i=0;i {
E+=(m_y[0][i]-m_o2[0][i])*(m_y[0][i]-m_o2[0][i]);
}
//计算隐藏层的权修改量
for(int i=0;i {
double Z=0;
for(int j=0;j {
Z+=m_w[i][j]*m_deltaO[0][j];
}
m_deltaH[0][i]=Z*m_o1[0][i]*(1-m_o1[0][i]);
}
//修改输出层权矩阵
for(int k=0;k {
for(int i=0;i {
m_w[k][i]+=m_alpha*m_o1[0][k]*m_deltaO[0][i];
}
}
//修改隐藏层权矩阵
for(int k=0;k {
for(int i=0;i {
m_v[k][i]+=m_alpha*m_x[0][k]*m_deltaH[0][i];
}
}
}
}
cout<<“迭代次数:“< cout<<“误差:“< }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 850 2010-11-04 16:01 Matrix.h
文件 2512 2010-11-04 16:05 BP.cpp
文件 1038 2010-11-04 14:43 BP.h
文件 122 2010-11-04 14:20 BP.txt
文件 566 2010-11-04 14:44 main.cpp
文件 2717 2010-11-04 16:06 Matrix.cpp
----------- --------- ---------- ----- ----
7805 6
- 上一篇:Windows游戏编程大师技巧(CHM)
- 下一篇:C++ 21点扑克牌游戏
相关资源
- C++ 21点扑克牌游戏
- 180912.cpp
- 校园卡信息管理系统
- c++实现图最短路径
- The Design And Evolution Of C++英文版
- vc 视频会议系统v2.8 源码
- LL(1)文法分析全过程(FIRST/FLLOW/S
- C++ 公司员工管理系统的设计源代码
- DNFC++辅助开源
- 标准C++STL源码剖析(侯捷著)(非扫
- Effective C++ 中文版2nd Edition
- VC++界面换肤 界面自绘 内置滚动条自
- celrityC/C++源码查看工具
- Microsoft Visual C++ 14Build Tools
- 毕业设计C++五子棋源代码及毕业论文
- 哲学家进餐问题的c++模拟实现
- 数据结构课程设计 停车场管理系统
- puma560的运动学正解和逆解的C++源码
- 简单的汽车租赁管理软件C++控制台程
- 定义和使用分数类fraction
- 剑灵辅助源码
- 数字图像处理扑克牌识别程序
- BC45,BC++ 4.5 开发工具
- C++ 数据结构书籍 - 清华大学 - 邓俊辉
- C++AMP.pdf
- C++ Primer 第五版 中文版+英文版 pdf
- Visual C++音频视频处理技术及工程实践
- VC++各版本合集2005-2017
- 数字图像处理与机器视觉——Visual
- QT5.9_c++开发指南——随书[源码]
评论
共有 条评论