资源简介
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++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
评论
共有 条评论