资源简介

C++版本的Bp神经网络,工程代码双击直接运行。可用于数据拟合、数据预测,N维输入,1输出。

资源截图

代码片段和文件信息

#include “BpNet.h“

using namespace std;

BpNet::BpNet()
{
srand((unsigned)time(NULL));        // 随机数种子    
error = 100.f;                      // error初始值,极大值即可

// 初始化输入层
for (int i = 0; i < innode; i++)
{
inputlayer[i] = new inputNode();
for (int j = 0; j < hidenode; j++)
{
inputlayer[i]->weight.push_back(get_11Random());
inputlayer[i]->wDeltaSum.push_back(0.f);
}
}

// 初始化隐藏层
for (int i = 0; i < hidelayer; i++)
{
if (i == hidelayer - 1)
{
for (int j = 0; j < hidenode; j++)
{
hiddenlayer[i][j] = new hiddenNode();
hiddenlayer[i][j]->bias = get_11Random();
for (int k = 0; k < outnode; k++)
{
hiddenlayer[i][j]->weight.push_back(get_11Random());
hiddenlayer[i][j]->wDeltaSum.push_back(0.f);
}
}
}
else
{
for (int j = 0; j < hidenode; j++)
{
hiddenlayer[i][j] = new hiddenNode();
hiddenlayer[i][j]->bias = get_11Random();
for (int k = 0; k < hidenode; k++) { hiddenlayer[i][j]->weight.push_back(get_11Random()); }
}
}
}

// 初始化输出层
for (int i = 0; i < outnode; i++)
{
outputlayer[i] = new outputNode();
outputlayer[i]->bias = get_11Random();
}
}

void BpNet::forwardPropagationEpoc()
{
// forward propagation on hidden layer
for (int i = 0; i < hidelayer; i++)
{
if (i == 0)
{
for (int j = 0; j < hidenode; j++)
{
double sum = 0.f;
for (int k = 0; k < innode; k++)
{
sum += inputlayer[k]->value * inputlayer[k]->weight[j];
}
sum += hiddenlayer[i][j]->bias;
hiddenlayer[i][j]->value = sigmoid(sum);
}
}
else
{
for (int j = 0; j < hidenode; j++)
{
double sum = 0.f;
for (int k = 0; k < hidenode; k++)
{
sum += hiddenlayer[i - 1][k]->value * hiddenlayer[i - 1][k]->weight[j];
}
sum += hiddenlayer[i][j]->bias;
hiddenlayer[i][j]->value = sigmoid(sum);
}
}
}

// forward propagation on output layer
for (int i = 0; i < outnode; i++)
{
double sum = 0.f;
for (int j = 0; j < hidenode; j++)
{
sum += hiddenlayer[hidelayer - 1][j]->value * hiddenlayer[hidelayer - 1][j]->weight[i];
}
sum += outputlayer[i]->bias;
outputlayer[i]->value = sigmoid(sum);
}
}

void BpNet::backPropagationEpoc()
{
// backward propagation on output layer
// -- compute delta
for (int i = 0; i < outnode; i++)
{
double tmpe = fabs(outputlayer[i]->value - outputlayer[i]->rightout);
error += tmpe * tmpe / 2;

outputlayer[i]->delta
= (outputlayer[i]->value - outputlayer[i]->rightout)*(1 - outputlayer[i]->value)*outputlayer[i]->value;
}

// backward propagation on hidden layer
// -- compute delta
for (int i = hidelayer - 1; i >= 0; i--)    // 反向计算
{
if (i == hidelayer - 1)
{
for (int j = 0; j < hidenode; j++)
{
double sum = 0.f;
for (int k = 0; k < outnode; k++) { sum += outputlayer[k]->delta * hiddenlayer[i][j]->weight[k]; }
hiddenLa

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-19 14:37  BpNet\
     目录           0  2019-02-25 14:26  BpNet\.vs\
     目录           0  2019-02-25 14:26  BpNet\.vs\BpNet\
     目录           0  2019-02-25 14:26  BpNet\.vs\BpNet\v14\
     文件      885760  2019-03-19 14:37  BpNet\.vs\BpNet\v14\.suo
     目录           0  2019-03-19 14:36  BpNet\BpNet\
     文件        1297  2019-02-25 14:26  BpNet\BpNet.sln
     文件     8622080  2019-03-19 14:37  BpNet\BpNet.VC.db
     文件        8390  2019-03-19 14:35  BpNet\BpNet\BpNet.cpp
     文件        2522  2019-03-19 14:36  BpNet\BpNet\BpNet.h
     文件        7484  2019-02-25 14:27  BpNet\BpNet\BpNet.vcxproj
     文件        1171  2019-02-25 14:27  BpNet\BpNet\BpNet.vcxproj.filters
     目录           0  2019-02-25 14:27  BpNet\BpNet\Debug\
     文件         772  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.Build.CppClean.log
     文件        1233  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.log
     文件      287686  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.obj
     目录           0  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\
     文件         184  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\BpNet.lastbuildstate
     文件        1158  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\CL.command.1.tlog
     文件       31464  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\CL.read.1.tlog
     文件         784  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\CL.write.1.tlog
     文件        1104  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\link.command.1.tlog
     文件        3210  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\link.read.1.tlog
     文件         378  2019-02-25 14:27  BpNet\BpNet\Debug\BpNet.tlog\link.write.1.tlog
     文件      322646  2019-02-25 14:27  BpNet\BpNet\Debug\Source.obj
     文件      470016  2019-02-25 14:27  BpNet\BpNet\Debug\vc140.idb
     文件      413696  2019-02-25 14:27  BpNet\BpNet\Debug\vc140.pdb
     文件        1924  2019-02-25 15:11  BpNet\BpNet\Source.cpp
     目录           0  2019-02-25 14:31  BpNet\BpNet\x64\
     目录           0  2019-03-19 14:37  BpNet\BpNet\x64\Release\
     文件           3  2019-03-19 14:37  BpNet\BpNet\x64\Release\BpNet.log
............此处省略7个文件信息

评论

共有 条评论