深度卷积网络:实例探究
经典网络
我们需要了解几个经典的神经网络结构,分别是LeNet-5网络、AlexNet和VGGNet
首先我们来看LeNet-5网络
假设你有一张32*32*1的图片,LeNet-5可以识别图片中的手写数字,比如7,此网络是针对灰度图像训练的。
此网络,第一层使用6个5*5的过滤器,步幅为1,padding为0,输出结果为28*28*6。图像尺寸从32*32缩小到28*28,然后进行池化操作,过滤器宽度为2,步幅为2。图像的尺寸高度和宽度都缩小了2倍,输出结果是一个14*14*6的图像;接下来是卷积层,我们用一组16个5*5的过滤器,新的输出结果有16个信道,图像再次缩小。然后又是池化层,高度和宽度再缩小一半,然后乘积是400,下一层是全连接层,在全连接层有400个节点,每个节点有120个神经元,最后一步就是利用这84个特征得到最后的输出。这里使用softmax函数输出 十种分类结果。
下面第二种神经网络是AlexNet
首先用一张227*227*3的图片作为输入,第一层我们使用96个11*11的过滤器,步幅为4,然后尺寸缩小到55*55,然后利用一个3*3的过滤器构建最大池化层,f=3,步幅为2。总面积尺寸缩小为27*27*96。接着再执行一个5*5的卷积,然后再次进行最大池化,尺寸缩小到13*13,再次执行一次与上一步相同的卷积,相同的padding得到的结果是13*13。384个过滤器。再做一次3*3的相同卷积,再做一次同样的操作,最后进行一次最大池化尺寸缩小到6*6*256=9216,将其展开为9216个单元,然后是一些全连接层,最后使用softmax函数输出识别的结果。
最后一个网络,VGG-16网络
值得注意的一点是,此网络没有那么多超参,这是一种只需要专注于构建卷积层的简单网络。
首先用3*3 步幅为1的过滤器构建卷积层,padding参数为same。然后用一个2*2,步幅为2的过滤器构建最大池化层,因此VGG网络的一大优点是简化了神经网络结构
假设要识别这样一个图像,在最开始的2层,用64个3*3的过滤器对输入的图像进行卷积,输出结果是224*224,因为进行了相同的卷积,信道数量也一样,进行第一个卷积之后得到224*224的特征图,接着还有一层224*224*64。这意味着我们用64个过滤器进行了两次卷积。接下来创建一个池化层,将输入的图像进行压缩,减少到112*112*64。然后又是若干个卷积层,然后又是若干个卷积层,使用120个过滤器做一些相同的卷积操作,输出结果为112*112*128。然后进行池化,可以推导出池化后的结果,接着再用256个同样的过滤器进行三次卷积操作,然后再池化,再卷积三次,再池化。将最后得到的7*7*512的特征图进行全连接操作,得到4096个单元,然后进行softmax激活,输出从1000个对象中识别的结果
残差网络
ResNets是由残差块构建的,什么是残差块
这是一个两层神经网络,在L层进行激活得到a[l+1]再次进行激活,之后得到a[l+2],计算过程是从a[l]开始首先进行线性激活,根据这个等式通过a[l]算出z[l+1],然后通过ReLU非线性激活得到a[l+1],接着再次进行线性激活,最后根据这个等式再次进行ReLU非线性激活。
换句话说,信息流从a[l]到a[l+2]需要经过这组网络层的主路径
谷歌Inception网络简介
构建卷积层时,你要决定过滤器的大小究竟是1*3,3*3还是5*5或者要不要添加池化层,而Inception网络的作用就是代替你来做决定。所以Inception网络或者Inception层就是代替人工来确定卷积层中的过滤器类型或者确定是否需要创建卷积层或池化层