资源简介
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\li
文件 3210 2019-02-25 14:27 BpNet\BpNet\Debug\BpNet.tlog\li
文件 378 2019-02-25 14:27 BpNet\BpNet\Debug\BpNet.tlog\li
文件 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个文件信息
相关资源
- C++图书借阅系统MFC
- 用Visual C++6.0开发的贪吃蛇游戏含注释
- raytracing 算法
- 后方交会C++程序
- 中国象棋游戏C++
- c++面向对象程序设计教程第三版陈维
- 课程设计—仓库管理系统C++篇 源码
- DES算法(C++实现)49106
- c++ 17 the complete guide
- C++开源超级玛丽
- FTP服务器MFC源码
- C++ BOOST::Asio库网络编程源代码
- VC++编写上位机串口通信界面
- c++ VS2013 mysql 源代码
- 主站接收数据的101协议
- VC++实现的网络爬虫程序,非常适合做
- 数字图像处理 的C++反色
- C/C++标准库源代码
- 计算器(c语言实现版)
- 易学C++pdf+随书源代码+习题解答
- VS2013 MFC 编程基础19个专题
- C++.Net编写的记事本程序
- DLL反编译C++工具
- 三次样条插值函数c++实现
- VC++解析PSD文件并显示图像源代码
- 学生信息管理系统c++,含数据库
- C++ MFC扫雷源码
- C++_标准模板库(STL)
- Microsoft visual c++ 14.058503
- 2019牛客校招面试题附答案与解析c++篇
评论
共有 条评论