1998年,计算机科学家Yann LeCun等提出了LeNet卷积神经网络,被誉为卷积神经网络之父。
卷积神经网络就是含卷积层的网络。
定义
LeNet网络:早起用来识别手写数字图像的卷积神经网络。
LeNet通过梯度下降训练卷积神经网络,实现识别手写数字。可以算是CNN网络的鼻祖了。
其网络结构非常简单:由卷积层和全连接层两个部分组成。
LeNet的网络架构:
LeNet(
(conv): Sequential(
(0): Conv2d(1, 6, kernel_size=(5, 5), stride=(1, 1))
(1): Sigmoid()
(2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(3): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))
(4): Sigmoid()
(5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(fc): Sequential(
(0): Linear(in_features=256, out_features=120, bias=True)
(1): Sigmoid()
(2): Linear(in_features=120, out_features=84, bias=True)
(3): Sigmoid()
(4): Linear(in_features=84, out_features=10, bias=True)
)
)
- 卷积层块
- 基本单位:卷积层+最大池化层
- 卷积层用来识别图像里的空间模式,如线条和物体局部。
- 最大池化层则用来降低卷积层对位置的敏感性。
每个卷积层都是用的5x5的窗口,输出上使用的sigmoid激活函数,
公式如下:
S ( x ) = 1 1 + e − x S(x) = \frac{1}{1+e^{-x}} S(x)=1+e−x1
第一层卷积层输出通道数为6,四二个卷积层输出通道数则增加到16。为了让两个卷积层的参数尺寸类似,但第一个卷积层输入的高和宽要大于第二个卷积层,因此增加了输出通道。
两个最大池化层的窗口形状均为8x,且步长为2。
卷积层块的输出形状为(批量大小,通道,高,宽)。
-
全连接层块
- 卷积层块接入全连接层块时,会将小批量中每个样本变平(flatten)。也就是说转换为二维;第一维是小批量中的样本,第二维是每个样本变平后的向量表示,且向量长度为通道x高x宽。
- 全连接层块有三个全连接层,它们的输出分别为120,84,10。10即对应了十个类别(0~9)。
最后一层全连接层采用径向基函数(Radial basis function,RBF)。公式如下:
y i = ∑ j ( x j − w i j ) 2 y_i = \sum_{j}{(x_j-w_{ij})^2} yi=∑j(xj−wij)2