• 大小: 4KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2023-12-29
  • 语言: C/C++
  • 标签: BP  C++  面向对象  

资源简介

使用面向对象的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


评论

共有 条评论