经典神经网络诞生记:
  • 1、LeNet,1998年
  •   2、AlexNet,2012年
  •   3、ZF-net,2013年
  •   4、GoogleNet,2014年
  •   5、VGG,2014年
  •   6、ResNet,2015年

LeNet-5

LeNet-5是由 Yann LeCun 等人于1998年提出的,是一个用于识别手写数字的网络,其网络结构图如下所示:



LeNet-5的输入是 32×32 的灰度图像,只有一个通道。网络结构包括两组卷积层+池化层的组合,两个全连接层,输出是 84×1维的向量,再通过一个特定的分类器得到预测值。前期LeNet-5 中的池化都是平均池化,而现在通常会使用最大池化。另外现在通常会使用 Softmax 来得到 10 路输出作为预测。

在 LeNet-5 中,随着网络的深入,数据的高度和宽度逐渐缩小,通道数逐渐增加。LeNet-5 是一个很小的网络,只有约 6 万个参数,现代的神经网络经常有上千万甚至上亿个参数。

LeNet-5共有7层,不包含输入层,每层都包含可训练参数(连接权重)。输入图像为32*32大小。这要比Mnist数据库中最大的字母(28*28)还大。这样做的原因是希望潜在的明显特征如笔画端点或角点能够出现在最高层特征监测器感受野的中心。在LeNet-5中,最后一层卷积层的感受野的中心在32x32的输入图像中形成了一个20x20的区域,输入像素值被归一化了,这样背景(白色)对应-0.1,前景(黑色)对应1.175.这使得输入的均值约等于0,方差约等于1,这样能够加速学习。

LeNet-5网络跟现在的网络结构相似,在一些处理方式上有区别:

  • LeNet-5使用Sigmoid和Tanh函数来获取非线性输出,现在常使用的非线性函数是ReLU;
  • LeNet-5是在池化层之后引入了非线性,现在一般是在卷积层后通过激活函数获取非线性,在池化层后不再引入非线性;

训练参数计算:


C1层

属性:卷积层 卷积核大小 5*5

输入:32*32

输出特征图大小:28*28 (32-5+1)

卷积核种类(特征图个数): 6

神经元数量: 28*28*6

可训练参数: 6*(5*5+1)(6个特征图,每个特征图含一个滤波器5*5个参数,和一个偏置参数)

连接数: 6*(5*5+1)*28*28

S2层

属性:下采样层 采样区域大小 2*2

采样方式: 2*2区域的4个值相加,乘以一个可训练参数,再加上一个偏置参数,结果通过Sigmoid非线性化

输出特征图大小: 14*14

采样种类(特征图个数): 6

神经元数量: 6*14*14

可训练参数: 6*(1+1)(采样的权重+一个偏置参数)

连接数: 6*(2*2+1)*14*14

C3层

属性: 卷积层 卷积核大小 5*5

输出特征图大小: 10*10

卷积核种类(特征图个数): 16

可训练参数:C3跟S2并不是全连接的,具体连接方式是: C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入,对应如下:

这样算,可训练参数 = 6*(3*5*5+1)+6*(4*5*5+1)+3*(4*5*5+1)+1*(6*5*5+1)=1516

连接数:10*10*1516

S4层

属性:下采样层 采样区域大小 2*2

采样方式: 2*2区域的4个值相加,乘以一个可训练参数,再加上一个偏置参数,结果通过Sigmoid非线性化

输出特征图大小: 5*5

采样种类(特征图个数): 16

神经元数量: 16*5*5

可训练参数: 16*(1+1)(采样的权重+一个偏置参数)

连接数:16*(2*2+1)*5*5=2000

C5层

属性:卷积层 卷积核大小 5*5

输入:5*5

输出特征图大小:1*1 (5-5+1)

卷积核种类(特征图个数): 120

神经元数量: 120*1

可训练参数: 120*(5*5*16+1)=48120

连接数: 120*(5*5*16+1)=48120

F6

属性: 全连接层

输入: 120维的向量

计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数

可训练参数: 84*(120+1)= 10164

Gaussian Connections

LeNet-5最后一步是Gaussian Connections,采用了RBF函数(即径向欧式距离函数),计算输入向量和参数向量之间的欧式距离。目前已经被Softmax取代。

最新文章

  1. 我的git学习
  2. ORM即 对象-关系映射(转自:微冷的雨)
  3. ISTool5.3.1汉化版使用教程
  4. mysql 时间函数
  5. centos6.5安装图形界面,windows远程linux图形界面
  6. 20145120 《Java程序设计》第2周学习总结
  7. codevs 1027 姓名与ID
  8. Canvas Path 绘制柱体
  9. Lars Knoll 宣布了Qt 5有四大目标
  10. bzoj 1020-1029
  11. 腾讯优图及知脸(ZKface)人脸比对接口测试(python)
  12. Ubuntu 环境 samba的安装&配置
  13. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&&Codeforces 861A k-rounding【暴力】
  14. python全栈学习--day1
  15. SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)
  16. rubygem若干常用选项参数
  17. ERP口碑订单无法落桌的解决方法
  18. C/C++ strict-aliasing
  19. C# 获取Header中的token值
  20. springboot整合rabbirmq(3.7.9)中使用mandatory参数获取匹配失败的消息以及存入rabbitmq备份交换器中!

热门文章

  1. Linux Shell编程第4章——sed和awk
  2. hive--udf函数(开发-4种加载方式)
  3. Tomcat 源码分析(转)
  4. IE6/7 下:inline-block解决方案
  5. VMWare 网络连接模式(bridged、NAT、host-only)详解
  6. 【Head First Servlets and JSP】笔记21:从有脚本到无脚本
  7. vim终端复制_不开启xterm_clipboard的解决方式
  8. windows技巧--优雅的设置环境变量,其实只是为了节约几秒宝贵的时间
  9. idea中如何debug本地maven项目
  10. unbntu修改mac地址