資源簡介
使用面向對象的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點撲克牌游戲
評論
共有 條評論