一、INTRODUCTION
LeNet是在1998年由Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner. 的论文Gradient-Based Learning Applied To Document Recognition引入。本文中将介绍原始论文中描述的LeNet-5 CNN架构,并使用TensorFlow2.0来实现。然后,利用构建的LeNet-5 CNN对MNIST数据集执行分类任务。
你将在文章中学到什么?
- 了解卷积神经网络的构建
- 深度学习和机器学习中常用术语的关键定义
- 理解LeNet-5 CNN
- 使用 TensorFlow 和 Keras 实现神经网络
二、卷积神经网络(CNN)
卷积神经网络是用于解决与图像相关任务的神经网络架构的标准形式。目标检测、人脸识别、姿态估计等任务的解决方案都是CNN 架构的变体。CNN 架构的一些特性使它们在许多计算机视觉任务中更加出色:
- Local Receptive Fields(局部感受野)
- Sub-Sampling(下采样or子采样)
- Weight Sharing(权重共享)
三、LeNet-5
LeNet-5 CNN架构有七层,包含3个卷积层、2个下采样层、2个全连接层。如下:
(1)第一层是输入层,不具备学习能力。输入层被构建为接受32x32大小的输入,这是传递到下一层图像的尺寸。 而MNIST 数据集图像的尺寸为 28x28。 为了使 MNIST 图像维度满足输入层的要求,对 28x28 图像进行填充。
(2)将使用的灰度图像像素值从 0 到 255 归一化为 -0.1 到 1.175 。 这样做是为确保这批图像的平均值为 0,标准差为 1,以减少训练时间。 在下面使用 LeNet-5 CNN的图像分类任务中,我们将标准化图像像素值为0 到 1 之间的值。
(3)LeNet-5 架构还使用两种类型的层:卷积层和子采样层。
- Convolutional layers
- Sub-sampling layers
(4)第一层卷积层 C1 产生 6 个特征图作为输出,核大小为 5x5。 核(或滤波器)是包含权重值与输入值卷积过程中使用的权重值的窗口名称。 5x5 也表示卷积层内每个单元或神经元的局部感受野大小。 第一个卷积层产生的六个特征图的尺寸为 28x28。
(5)子采样层"S2"跟在"C1"层之后。 "S2"层将它从前一层接收到的特征图维度减半; 这通常称为下采样。
(6)"S2"层还产生了 6 个特征图,每个特征图对应于从前一层作为输入传递的特征图。
总结每一层的主要特征如下表:

四、LeNet-5 CNN TensorFlow实现
- TensorFlow:一个用于实施、训练和部署机器学习模型的开源平台。
- Keras:一个开源库,用于实现在 CPU 和 GPU 上运行的神经网络架构。
- Numpy:使用 n 维数组进行数值计算的库。
(1)首先导入这些库:
import tensorflow as tf
from tensorflow import keras
import numpy as np
(2)接下来使用Keras库加载MNIST数据集,我们将数据集划分为测试集、验证集和训练集。
将数据集中图像像素范围从 0-255 归一化到 0-1。
(train_x, train_y), (test_x, test_y) = keras.datasets.mnist.load_data()
train_x = train_x / 255.0
test_x = test_x / 255.0
train_x = tf.expand_dims(train_x, 3)
test_x = tf.expand_dims(test_x, 3)
val_x = train_x[:5000]
val_y

本文介绍了卷积神经网络的基础,重点讲解了经典的LeNet-5模型,包括其结构和工作原理。通过TensorFlow2.0和Keras库详细展示了如何构建并训练LeNet-5模型,用于MNIST数据集的手写数字分类任务。经过训练,模型在测试集上取得了超过98%的准确率。
最低0.47元/天 解锁文章
1376

被折叠的 条评论
为什么被折叠?



