LeNet-5

LeNet-5 可以说是卷积神经网络的开山鼻祖。它是由卷积神经网络之父Yan LeCun在1998年提出,主要用来做手写字符的识别和分类。在美国银行中使用来识别手写支票里的字符。和今天的动辄上百层,上亿个需要训练的参数的深度卷积神经网络来比,它比较简单。但是它麻雀虽小,五脏俱全。其中包含了卷积层,池化层,全连接层。LeNet-5中的5代表这这个网络除了输入层有5层。

输入层

是32乘32的图片灰度值。只有一个channel:

第一层

第一层包括一个卷积层和一个池化层:
卷积层
共有6个Filter,每个Filter为5乘5,步长为1。没有padding。 所以卷积层的输出每个filter输出的channel是28乘28的矩阵,6个filter就生成6个channel。结果就是28乘28乘6的输出。
池化层
因为这个网络提出的时间较早,当时池化层还用的是平均值,现在我们一般用最大值。池化层filter的大小为2乘2,步长为2,所以对于卷积层的高和宽都缩小到原来的一半,channel数不变。

所以第一层最终输出维度为14乘14乘6。

第二层

第二层也包括一个卷积层和一个池化层:
卷积层
共有16个Filter,每个Filter为5乘5,步长为1。没有padding。 所以卷积层的输出每个filter输出的channel是10乘10的矩阵,16个filter就生成16个channel。结果就是10乘10乘16的输出。
池化层
和第一层的池化层一样,filter的大小为2乘2,步长为2,所以对于卷积层的高和宽都缩小到原来的一半,channel数不变。

所以第一层最终输出维度为5乘5乘16。

第三层

第三层是一个全连接层,它包含120个神经元。它将第二层的输出5516 个点和本层120个神经元进行全连接。

第四层

第四层也是一个全连接层,它包含84个神经元。第三层的输出120个值和本层的84个神经元相连。

第五层

输出层,用来生成输入字符的概率。我们现在可以用softmax来求得输入是0-9的概率。当时LeNet用的是一个现在已经不常用的输出函数。

LeNet总共有大概6万个参数。

LeNet对现代网络的影响

  1. 随着网络的加深,输出的长宽在减小,但是channel在增加。
  2. 一个(或者几个)卷积层后边跟一个池化层。接着又是卷积层…
  3. 最后几层用全连接层。

AlexNet


Alex Net和Le Net有很多相似的地方。比如都是卷积层后接池化层,最终都是以全连接层收尾。但是AlexNet和LeNet比还是以下一些进步:
1. 输入是多channel,GRB 3个channel。
2. 使用的是Max pool
3. 使用了Relu 激活函数。
3. 使用了same convolution,也就是说加入了padding。
4. 最终的输出层使用了softmax

AlexNet有6000万个参数需要计算。Alex网络每一层的filter数,filter的大小,使用valid还是same convolution,感觉都是神来之笔。没有什么规律可言。下边我们就看一个很有规律的深度卷积神经网络VGG-16

VGG-16

VGG-16,共有16层,它是一个很规整的网络。

卷积Filter

size:3*3
步长:1
使用 same convolution

Pooling Filter

使用max pooling
size:2*2
步长:2


上图中划线部分表示应用了两个卷积层,每个卷积层都是64个filter。
2个卷积->pool->2个卷积->pool->3个卷积->pool->3个卷积->pool->3个卷积->pool->全连接->全连接->softmax
卷积层和pooling层的Filter设置我们都说过了,还有一个需要注意的是卷积层的Filter个数,也就是channel数,是从64->128->256->512->512。随着每层输出矩阵长宽成倍的缩小,channel数成倍的增长。这个规律很有意思。
这个网络有1.38亿个参数需要训练。非常大。这可能是为什么最后一个卷积层没有double的原因。如果那样要训练的参数更多。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: