卷积神经网络示例( 卷积层、池化层、全连接层)


1 池化层(Pooling layers

除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。假如输入是一个 4×4 矩阵,用到的池化类型是最大池化(max pooling),执行最大池化的树池是一个 2×2 矩阵,即f=2,步幅是 2,即s = 2,执行过程非常简单,把 4×4 的输入拆分成不同的区域,这里用不同颜色来标记,对于 2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值,下图是操作的具体细节:

 

 

 

最大化操作的功能就是只要在任何一个象限内提取到某个特征,它都会保留在最大化的池化输出里池化的超级参数包括过滤器大小f和步幅s,常用的参数值为f = 2s = 2,应用频率非常高,其效果相当于高度和宽度缩减一半也有使用f = 3s = 2的情况。至于其它超级参数就要看你用的是最大池化还是平均池化了也可以根据自己意愿增加表示padding 的其他超级参数,虽然很少这么用最大池化时,往往很少用到超参数 padding,当然也有例外的情况

2 卷积神经网络示例( Convolutional neural network example

假设,有一张大小为 32×32×3 的输入图片,这是一张 RGB 模式的图片,我们想做手写体数字识别。32×32×3 RGB 图片中含有某个数字,比如 7,你想识别它是从 0-9 10 个数字中的哪一个,我们构建一个神经网络来实现这个功能。

输入是 32×32×3 的矩阵,假设第一层使用过滤器大小为 5×5,步幅是 1padding0,过滤器个数为 6,那么输出为 28×28×6,将这层标记为 CONV1,它用了 6 个过滤器,增加了偏差,应用了非线性函数,可能是 ReLU 非线性函数,最后输出 CONV1 的结果。然后构建一个池化层,这里我选择用最大池化,参数 f= 2s = 2,因为 padding 0,现在开始构建池化层,最大池化使用的过滤器为 2×2,步幅为 2,表示层的高度和宽度会减少一半,因此,28×28 变成了 14×14,通道数量保持不变,所以最终输出为 14×14×6,将该输出标记为 POOL1。人们在计算神经网络有多少层时,通常只统计具有权重和参数的层,因为池化层没有权重和参数,只有一些超参数,这里,我们把 CONV1POOL1 共同作为一个卷积,并标记为 Layer1,得到的输出是 14×14×6。我们再为它构建一个卷积层,过滤器大小为 5×5,步幅为 1,这次我们用 16 个过滤器,最后输出一个 10×10×16 的矩阵,标记为 CONV2。然后做最大池化,超参数f = 2s= 2。你大概可以猜出结果,f = 2s = 2,高度和宽度会减半,最后输出为5×5×16,标记为POOL2,这就是神经网络的第二个卷积层,即Layer25×5×16 矩阵包含 400 个元素,现在将 POOL2 平整化为一个大小为 400 的一维向量,我们可以把平整化结果想象成这样的一个神经元集合,然后利用这 400 个单元节点构建下一层。假设每个节点120个神经元,,这就是我们第一个全连接层,标记为 FC3,这 400 个单元与 120 个单元紧密相连,这就是全连接层,这是一个标准的神经网络,它的权重矩阵为w[3],维度为 120×400。然后我们对这个 120 个单元再添加一个全连接层,这层更小,假设它含有 84 个单元,标记为 FC4。最后,用这 84 个单元填充一个 softmax 单元,如果我们想通过手写数字识别来识别手写 0-9 10 个数字,这个 softmax 就会有 10 个输出。

 

在神经网络中,另一种常见模式就是一个或多个卷积后面跟随一个池化层,然后一个或个卷积层后面再跟一个池化层,然后是几个全连接层,最后是一个 softmax,这是神经网络的另一种常见模式。卷积层的两个主要优势在于参数共享和稀疏连接,一个特征检测器,如垂直边缘检测器用于检测图片左上角区域的特征,这个特征很可能也适用于图片的右下角区域,因此在计算图片左上角和右下角区域时,你不需要添加其它特征检测器,假如有一个这样的数据集,其左上角和右下角可能有不同分布,也有可能稍有不同,但很相似,整张图片共享特征检测器,提取效果也很好;有一个3×3的过滤器,在6×6的图片中,输出单元(元素 0)仅与 36 个输入特征中 9 个相连接,而且其它像素值都不会对输出产生任影响,这就是稀疏连接的概念。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM