卷积神经网络结构——LeNet-5(卷积神经网络入门,Keras代码实现)

背景简介

要深入理解卷积神经网络的结构,我们需要追根溯源,只有这样才能更好的理解 CNN 网络。

1998年 LeCun 和 Bengio 等人利用 LeNet-5 网络在手写体数字识别领域上的识别效果超过了传统方法,从此开启了卷积神经网络的在图像上的应用大门。据说,一开始美国银行的手写体数字识别就是用的这个算法。

原论文

Gradient -Based Learing Applied to Document Recognition
http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf
论文有点长,46页,估计很难读下来。

官方模型演示

LeCun 做了一些网页展示,有兴趣可以去浏览。
http://yann.lecun.com/exdb/lenet/

个人 github 实现

https://github.com/uestcsongtaoli/LeNet-5

个人理解

1. 模型介绍

原论文图片

上图是 LeCun 原论文中 LeNet-5 的结构图。

  1. 卷积层 C1
Conv2D(filters=6, kernel_size=(5, 5), padding=None, stride=(1, 1), activation='tanh')
  1. 池化层,用的是平均池化 S1
AveragePooling2D(pool_size=(2, 2), stride=(2, 2), padding=None)
  1. 卷积层 C3
Conv2D(filters=16, kernel_size=(5, 5), padding=None, stride=(1, 1), activation='tanh')
  1. 池化层,用的是平均池化 S4
AveragePooling2D(pool_size=(2, 2), stride=(2, 2), padding=None)
  1. 卷积层 C5 或者FC_1
Conv2D(filters=120, kernel_size=(5, 5), padding=None, stride=(1, 1), activation='tanh')
# 或者理解成
Flatten()
Dense(120, activation='tanh')
  1. F6
Dense(84, activation='tanh')
  1. OUTPUT
Dense(10, activation='softmax')

个人理解

  1. 这是后来典型的结构
    卷积-->池化-->卷积-->池化-->全连接-->全连接(softmax)
  2. LeNet-5 卷积核的大小是5x5,现在3x3,5x5和7x7都有
  3. 没有用 padding 技术,对图片边缘的信息处理不够
  4. 池化为了加快收敛,防止过拟合。池化用的是平均池化 average_pooling, 当下主要是最大值池化 max_pooling
  5. 激活函数用的 tanh, 当下主要用 relu,因为 relu 收敛更快
  6. filters 没一步都在增大,主要是为了避免丢失信息。用多个不同的 kernel 去学习前一层 feature map 中的特征
  7. 训练的时候用到了数据增强 augmentation
  8. 优化器,应该是用的 SGD
  9. 没有 dropout 技术
  10. 模型较小,学的特征不够多,无法处理较大较复杂的数据集。

模型讲解

  1. 英文
  2. 图文并茂
  3. Keras 代码实现
    https://engmrk.com/lenet-5-a-classic-cnn-architecture/

Kaggle教程

  1. 数据: Digit Recognizer
  2. 框架: Keras
    https://www.kaggle.com/vsmolyakov/lenet-cnn
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容