資源簡介
使用C++編寫的多層前向NN的BP算法,各層節(jié)點數(shù)、隱藏層數(shù)均為任意整數(shù)。訓(xùn)練數(shù)據(jù)為3個數(shù)字的奇偶檢驗運(yùn)算程序。程序使用VS2015編寫,有cpp源代碼及頭文件,代碼中配有注釋。

代碼片段和文件信息
#include?“BPlayer.h“
#include?
#include?“BPNetwork.h“
BPlayer::BPlayer()
{
}
BPlayer::~BPlayer()
{
free(Input);
free(Output);
free(NextInput);
free(DeltaOutput);
for?(int?i?=?0;?i? free(Weight[i]);
free(Weight);
}
BPlayer::BPlayer(int?inputSize?int?outputSize?BPNetwork*?net)
{
InputSize?=?inputSize;
OutputSize?=?outputSize;
Net?=?net;
Input?=?static_cast(malloc(inputSize*sizeof(double)));
Output?=?static_cast(malloc(outputSize*sizeof(double)));
NextInput?=?static_cast(malloc(outputSize*sizeof(double)));
DeltaOutput?=?static_cast(malloc(outputSize*sizeof(double)));
//Weight[j][last]為常數(shù)項,即閾值
Weight?=?static_cast(malloc((outputSize)*sizeof(double*)));
DeltaWeight?=?static_cast(malloc((outputSize)*sizeof(double*)));
for?(int?j?=?0;?j? {
//輸入項應(yīng)該多一個常數(shù)項
Weight[j]?=?static_cast(malloc((inputSize?+?1)*sizeof(double)));
DeltaWeight[j]?=?static_cast(malloc((inputSize?+?1)*sizeof(double)));
for?(int?i?=?0;?i?<=?inputSize;?i++)
{
Weight[j][i]?=?1.0*rand()?/?RAND_MAX?-?0.5; //產(chǎn)生-0.5到0.5的隨機(jī)數(shù)
DeltaWeight[j][i]?=?0;
}
}
}
double*?BPlayer::Process()
{
for?(int?j?=?0;?j? {
Output[j]?=?Weight[j][InputSize];
for?(int?i?=?0;?i? {
Output[j]?+=?Input[i]?*?Weight[j][i];
}
}
return?Output;
}
double*?BPlayer::ActiveOutput()
{
for?(int?j?=?0;?j? {
NextInput[j]?=?1.0?/?(1?+?exp(-Output[j]));
}
return?NextInput;
}
void?BPlayer::SetInput(double?*?input)
{
for?(int?i?=?0;?i? {
Input[i]?=?input[i];
}
}
void?BPlayer::UpdateWeight()
{
double?lastDelta;
double?delta;
for?(int?j?=?0;?j? {
for?(int?i?=?0;?i? {
lastDelta?=?DeltaWeight[j][i];
delta?=?DeltaOutput[j]?*?Input[i];
DeltaWeight[j][i]?=?Net->Alpha?*delta?+?Net->Eta*?lastDelta;
Weight[j][i]?-=?DeltaWeight[j][i];
}
DeltaWeight[j][InputSize]?=?Net->Alpha?*DeltaOutput[j]?+?Net->Alpha*?DeltaWeight[j][InputSize];
Weight[j][InputSize]?-=?DeltaWeight[j][InputSize];
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1050??2015-11-09?00:42??BPla
?????文件???????3488??2015-11-09?00:46??BPNetwork.cpp
?????文件????????955??2015-11-09?00:46??BPNetwork.h
?????文件?????????80??2015-11-08?22:16??data.txt
?????文件????????868??2015-11-09?00:49??main.cpp
?????文件???????1131??2015-11-09?00:01??SampleLoader.cpp
?????文件????????233??2015-11-08?22:16??SampleLoader.h
?????文件???????7743??2015-11-08?22:16??YML.BPN.vcxproj
?????文件???????2274??2015-11-09?00:42??BPla
-----------?---------??----------?-----??----
????????????????17822????????????????????9
評論
共有 條評論