資源簡介
用c++實現了BP神經網絡類,文件中含有測試數據,測試效果良好,關于該BP神經網絡類的實現原理,參考本人關于BP神經網絡敘述的博客
http://blog.csdn.net/hjkhjk007/article/details/9001304

代碼片段和文件信息
#include?“StdAfx.h“
#include?“BPNNs.h“
CBPNNs::CBPNNs(void)
{
AloatSizeJuge?=?false;
? nInputNodes=0;
?????nHiddenlayers=0;
?????nHiddenNodes=NULL;
? nOutputNodes=0;
?????nPatterns=0;
?nIterations=0;
?nErrorLevel=0;
?neta=0;
?nalpha=0;
?nTrainMethod=0;
?????nOLTF=0;
?????nHLTF=0;
}
CBPNNs::CBPNNs(BPNNS_CreateInfo?CreateInfo)
{
????AloatSizeJuge=true;
nInputNodes=CreateInfo.InputNodes;?????????????????????????//輸入層節點數
nHiddenlayers=CreateInfo.Hiddenlayers;?????????????????????//隱層數
nHiddenNodes=CreateInfo.HiddenNodes;
nOutputNodes=CreateInfo.OutputNodes;???????????????????????//輸出層節點數
nPatterns=CreateInfo.Patterns;?????????????????????????????//訓練實例數
//? nIterations=TrainInfo.Iterations;?????????????????????????//訓練次數
//? nErrorLevel=TrainInfo.ErrorLeve;???????????????????????//誤差級別????
//? neta=TrainInfo.eta;
//? nalpha=TrainInfo.alpha;
//? nTrainMethod=TrainInfo.TrainMethod;
//? nOLTF=TrainInfo.OLTF;?
//? nHLTF=TrainInfo.HLTF;
errorTemp=0.0;
JugeError=0;
AlotSize();//開辟空間
InitWeight();//初始化權值
}
CBPNNs::~CBPNNs(void)
{
if(AloatSizeJuge)
?FreeMatrix();
}
/*---------------創建BP神經網絡------------------------*/
bool?CBPNNs::CreateBPNNS(BPNNS_CreateInfo?CreateInfo)
{
if(nInputNodes||nHiddenlayers||nHiddenNodes||nOutputNodes||nPatterns)
{
if(IDNO==AfxMessageBox(L“?網絡已經存在是否重新創建??“MB_YESNO?1))
{
/*FreeMatrix();*/
return?false;
}
FreeMatrix();
}
AloatSizeJuge=true;
nInputNodes=CreateInfo.InputNodes;?????????????????????????//輸入層節點數
nHiddenlayers=CreateInfo.Hiddenlayers;?????????????????????//隱層數
nHiddenNodes=CreateInfo.HiddenNodes;
nOutputNodes=CreateInfo.OutputNodes;???????????????????????//輸出層節點數
nPatterns=CreateInfo.Patterns;?????????????????????????????//訓練實例數
//? nIterations=TrainInfo.Iterations;?????????????????????????//訓練次數
//? nErrorLevel=TrainInfo.ErrorLeve;???????????????????????//誤差級別????
//? neta=TrainInfo.eta;
//? nalpha=TrainInfo.alpha;
//? nTrainMethod=TrainInfo.TrainMethod;
//? nOLTF=TrainInfo.OLTF;?
//? nHLTF=TrainInfo.HLTF;
errorTemp=0.0;
JugeError=0;
AlotSize();//開辟空間
InitWeight();//初始化權值
return?true;
}
/*---------------變量分配空間過程------------------------*/
void?CBPNNs::VectorAllocate(VECTOR?*vectorint?nCols)
{
if((*vector=(VECTOR)calloc(nColssizeof(float)))==NULL)
{
AfxMessageBox(_T(“Sorry!Not?enough?memory?for?nodes“));
}
}
void?CBPNNs::AllocateCols(PFLOAT?matrix[]int?nRowsint?nCols)
{
int?i;
for(i=0;i VectorAllocate(&matrix[i]nCols);
}
void?CBPNNs::MatrixAllocate(MATRIX?*pmatrixint?nRowsint?nCols)
{
if((*pmatrix=(MATRIX)calloc(nRowssizeof(PFLOAT)))==NULL)
{
AfxMessageBox(_T(“Sorry!Not?enough?memory?for?nodes“));
}
AllocateCols(*pmatrixnRowsnCols);
}
/*---------------結束------------------------*/
/*---------------釋放空間函數------------------------*/
void?CBPNNs::MatrixFree(MATRIX?matrixint?nRows)
{
int?i;
for(i=0;i free(matrix
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????37468??2012-11-06?19:59??BP神經網絡類\BPNNs.cpp
?????文件????????8657??2012-11-06?19:48??BP神經網絡類\BPNNs.h
?????目錄???????????0??2012-11-21?16:10??BP神經網絡類\訓練數據和測試數據\
?????文件?????????442??2012-10-28?11:52??BP神經網絡類\訓練數據和測試數據\ftest.txt
?????文件????????1588??2012-10-28?11:52??BP神經網絡類\訓練數據和測試數據\input.txt
?????目錄???????????0??2013-06-02?21:38??BP神經網絡類\
評論
共有 條評論