当前位置: 首页 > news >正文

神经网络学习入门 -01

  找了好多网络上的资料都没有有关神经网络的入门的资料,于是乎决定自己码起。

  全是自学笔记,可能逻辑比较混乱。http://blog.csdn.net/zzwu/article/details/574931

  

  如上图,左边每一个灰底圆中被分配一个权重,这些权重将决定这个神经网络的活跃性,当输入信号进入神经细胞时,它们的值将与它们对应的权重相乘,作为图中大圆的输入。大圆的‘核’是一个函数,叫激励函数(activation function),它把所有这些新的、经过权重调整后的输入全部加起来,形成单个的激励值(activation value)。激励值也是一浮点数,且同样可正可负。然后,再根据激励值来产生函数的输出也即神经细胞的输出:如果激励值超过某个阀值(作为例子我们假设阀值为1.0),就会产生一个值为1的信号输出;如果激励值小于阀值1.0,则输出一个0。这是人工神经细胞激励函数的一种最简单的类型。在这里,从激励值产生输出值是一个阶跃函数。

  
 
   上图为一个前馈网络,就是一层一层向上输出,最终得到最终的输出。注意上图中,输入层不是神经细胞,神经细胞一共有两层,每一层实际都可以有任何数目的神经细胞,这完全取决于要解决的问题的复杂性。但神经细胞数目愈多,网络的工作速度也就愈低,由于这一缘故,以及为了其他的几种原因,网络的规模总是要求保持尽可能的小。

  一旦神经网络体系创建成功后,它必须接受训练来认出数字“4”。为此可用这样一种方法来完成:先把神经网的所有权重初始化为任意值。然后给它一系列的输入,在本例中,就是代表面板不同配置的输入。对每一种输入配置,我们检查它的输出是什么,并调整相应的权重。如果我们送给网络的输入模式不是“4”, 则我们知道网络应该输出一个0。因此每个非“4”字符时的网络权重应进行调节,使得它的输出趋向于0。当代表“4”的模式输送给网络时,则应把权重调整到使输出趋向于1。

  对每个字符,网络都需要接受许多训练,使它认识此文字的各种不同的版本。到最后,网络不单能认识已经训练的笔迹,还显示了它有显著的归纳和推广能力。

  这种类型的训练称作有监督的学习(supervised learnig),用来训练的数据称为训练集(training set)。调整权重可以采用许多不同的方法。对本类问题最常用的方法就是反向传播(backpropagation,简称backprop或BP)方法。

  在CNeuralNet.h 文件中,我们定义了人工神经细胞的结构、定义了人工神经细胞的层的结构、以及人工神经网络本身的结构。

   SNeuron(神经细胞的结构):

Struct SNeuron
{
     // 进入神经细胞的输入个数
     int m_NumInputs;
     
     // 为每一输入提供的权重
     vector<double> m_vecWeight;
     
     //构造函数
     SNeuron(int NumInputs);
  };

 

struct SNeuronLayer
{
    // 本层使用的神经细胞数目
   int                     m_NumNeurons;
 
      // 神经细胞的层
   vector<SNeuron>   m_vecNeurons;
 
   SNeuronLayer(int NumNeurons, int NumInputsPerNeuron);
};

 

 

在赋值权重时,通常比输入多赋一个-1的权重,因为:w1x1 + w2x2 + w3x3 +...+ wnxn+ t *(–1) >= 0

这个特殊的权重通常叫偏移(bias);

 CNeuralNet(神经网络类):请链接到http://blog.csdn.net/zzwu/article/details/575125 看详细解释。

转载于:https://www.cnblogs.com/soulmate1023/p/5414871.html

相关文章:

  • Calendar获取时间的月和日
  • php提示 Notice: Use of undefined constant name - assumed
  • 深入理解ThreadLocal
  • 沫沫金:EasyUI 固定列
  • Intellij idea断点 Debugger slow: Method breakpoints my dramatically slow down debugging
  • 分布式高并发系统如何保证对外接口的幂等性?
  • CentOS6 图形界面(gnome)安装
  • 钉钉客户端JS-API权限签名算法.NET版
  • Linux 卸载mysql-libs包出现错误
  • .net中的Queue和Stack
  • CSS中div覆盖另一个div
  • ARRAY_SIZE宏
  • 每日记录 2016-4-29 HTML5本地存储
  • Mina.Net实现的UDP多路广播
  • 向fedora添加rpmfusion源
  • Angular Elements 及其运作原理
  • Babel配置的不完全指南
  • C++11: atomic 头文件
  • CSS 三角实现
  • emacs初体验
  • HashMap ConcurrentHashMap
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • maven工程打包jar以及java jar命令的classpath使用
  • Python 反序列化安全问题(二)
  • text-decoration与color属性
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 构建工具 - 收藏集 - 掘金
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 坑!为什么View.startAnimation不起作用?
  • 思考 CSS 架构
  • 无服务器化是企业 IT 架构的未来吗?
  • Nginx实现动静分离
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • (5)STL算法之复制
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (万字长文)Spring的核心知识尽揽其中
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)80c52学习之旅-起始篇
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .net CHARTING图表控件下载地址
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 的程序集加载上下文
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @javax.ws.rs Webservice注解
  • [ C++ ] STL---stack与queue
  • [100天算法】-目标和(day 79)
  • [383] 赎金信 js
  • [ARM]ldr 和 adr 伪指令的区别
  • [C++]unordered系列关联式容器