资源简介
使用面向对象的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++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
评论
共有 条评论