热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

C++实现神经BP神经网络

这篇文章主要为大家详细介绍了C++实现神经BP神经网络,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C++实现神经BP神经网络的具体代码,供大家参考,具体内容如下

BP.h

#pragma once
#include
#include
#include
#include
#include
using std::vector;
using std::exp;
using std::cout;
using std::endl;
class BP
{
private:
 int studyNum;//允许学习次数
 double h;//学习率
 double allowError;//允许误差
 vector layerNum;//每层的节点数,不包括常量节点1
 vector>> w;//权重
 vector>> dw;//权重增量
 vector> b;//偏置
 vector> db;//偏置增量
 vector>> a;//节点值
 vector> x;//输入
 vector> y;//期望输出

 void iniwb();//初始化w与b
 void inidwdb();//初始化dw与db
 double sigmoid(double z);//激活函数
 void forward();//前向传播
 void backward();//后向传播
 double Error();//计算误差
public:
 BP(vectorconst& layer_num, vector>const & input_a0,
 vector> const & output_y, double hh = 0.5, double allerror = 0.001, int studynum = 1000);
 BP();
 void setLayerNumInput(vectorconst& layer_num, vector> const & input);
 void setOutputy(vector> const & output_y);
 void setHErrorStudyNum(double hh, double allerror,int studynum);
 void run();//运行BP神经网络
 vector predict(vector& input);//使用已经学习好的神经网络进行预测
 ~BP();
};

BP.cpp

#include "BP.h"
BP::BP(vectorconst& layer_num, vector>const & input,
 vector> const & output_y, double hh, double allerror,int studynum)
{
 layerNum = layer_num;
 x = input;//输入多少个节点的数据,每个节点有多少份数据
 y = output_y;
 h = hh;
 allowError = allerror;
 a.resize(layerNum.size());//有这么多层网络节点
 for (int i = 0; i const& layer_num, vector> const & input)
{
 layerNum = layer_num;
 x = input;
 a.resize(layerNum.size());//有这么多层网络节点
 for (int i = 0; i > const & output_y)
{
 y = output_y;
}

void BP::setHErrorStudyNum(double hh, double allerror,int studynum)
{
 h = hh;
 allowError = allerror;
 studyNum = studynum;
}

//初始化权重矩阵
void BP::iniwb()
{
 w.resize(layerNum.size() - 1);
 b.resize(layerNum.size() - 1);
 srand((unsigned)time(NULL));
 //节点层数层数
 for (int l = 0; l  daP, daB;
 

 for (int j = 0; j  0; l--)
 {
  daB = daP;
  daP.clear();
  daP.resize(layerNum[l]);
  for (int k = 0; k  BP::predict(vector& input)
{
 vector> a1;
 a1.resize(layerNum.size());
 for (int l = 0; l 

验证程序:

#include"BP.h"

int main()
{
 vector layer_num = { 1, 10, 1 };
 vector> input_a0 = { { 1,2,3,4,5,6,7,8,9,10 } };
 vector> output_y = { {0,0,0,0,1,1,1,1,1,1} };

 BP bp(layer_num, input_a0,output_y,0.6,0.001, 2000);
 bp.run();
 for (int j = 0; j <30; j++)
 {
 vector input = { 0.5*j };
 vector output = bp.predict(input);
 for (auto i : output)
  cout <<"j:" <<0.5*j <<" pridict:" <

输出:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 如何在PHPcms网站中添加广告
    本文详细介绍了在PHPcms网站后台添加广告的方法,涵盖多种常见的广告形式,如百度广告和Google广告,并提供了相关设置的步骤。同时,文章还探讨了优化网站流量的SEO策略。 ... [详细]
  • 当iOS设备越狱后,某些插件可能会导致系统崩溃(白苹果)。此时,可以通过进入安全模式来排查并删除有问题的插件。本文将详细介绍如何通过特定按键组合进入不加载MobileSubstrate的安全模式,并提供相关背景知识。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
author-avatar
呆子只爱小呆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有