深度学习中的分类网络(Classification)很多,可以说是神经网络的鼻祖,代表性的有:LeNet、AlexNet、VGGNet、GoogLeNet、ResNet、SENet、NASNet、AmboNet,下面先介绍LeNet.
LeNet
输入:32x32x1的灰度图像(1个channel,彩色图一般是 RGB 3个channel)
1. 卷积层(conv)
kernal size: 5x5,stride=1, channel=6
输出feature map的大小为:28x28x6
2. 池化层(average polling)
stride=2
输出feature map的大小为:14x14x6
同时经过激活函数sigmoid,shape不变
3. 卷积层(conv)
kernal size: 5x5,stride=1, channel=16
输出feature map的大小为:10x10x16
4. 池化层(average polling)
stride=2
输出feature map的大小为:5x5x16
同时经过激活函数sigmoid,shape不变
5. 将上一步5x5x16的feature map展开,得到长度为400的向量,连到第一个长度为120全连接层(Fully connnected)
6. 将上一步的120维向量连到第二个长度为84的全连接层
7. 最后送入softmax回归,得到十类手写体数字对应的概率值
LeNet大约有6万个参数。另外可以看出,随着网络的加深,图像的宽度和高度在缩小(主要由于polling层的下采样),与此同时,图像的通道数(主要由于卷积层)却在不断的变大。
LeNet和现在广泛使用神经网络有以下不同点:
1)LeNet使用sigmoid作为激活函数,我们一般使用ReLU,因为更简单,效果也差距不大;
2)LeNet使用average pooling作为池化层,而现在一般使用max pooling,主要原因还是max比较简单,运算量小,而且效果差距不大;
3)LeNet网络在pooling后再加激活函数,现在一般是经过卷积之后就加激活函数,可能也是出于计算的角度,对结果影响不大;
4)现在conv后一般会先加批归一化层(batchnorm,bn),LeNet当时还没有这个技术,后续介绍。
有疑问的地方欢迎留言,其他网络后面会一一介绍。