专栏首页郭耀华‘s Blog卷积神经网络CNN的意义

卷积神经网络CNN的意义

一、选用卷积的原因

  • 局部感知

简单来说,卷积核的大小一般小于输入图像的大小(如果等于则是全连接),因此卷积提取出的特征会更多地关注局部 —— 这很符合日常我们接触到的图像处理。而每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息

  • 参数共享

参数共享最大的作用莫过于很大限度地减少运算量了。

  • 多核

一般我们都不会只用一个卷积核对输入图像进行过滤,因为一个核的参数是固定的,其提取的特征也会单一化。这就有点像是我们平时如何客观看待事物,必须要从多个角度分析事物,这样才能尽可能地避免对该事物产生偏见。我们也需要多个卷积核对输入图像进行卷积。

二、卷积神经网络中的参数计算

举例1:

  比如输入是一个32x32x3的图像,3表示RGB三通道,每个filter/kernel是5x5x3,一个卷积核产生一个feature map,下图中,有6个5x5x3的卷积核,故输出6个feature map(activation map),大小即为28x28x6。

       下图中,第二层到第三层,其中每个卷积核大小为5x5x6,这里的6就是28x28x6中的6,两者需要相同,即每个卷积核的“层数”需要与输入的“层数”一致。有几个卷积核,就输出几个feature map,下图中,与第二层作卷积的卷积核有10个,故输出的第三层有10个通道。

举例2:

  NxN大小的输入(暂时不考虑通道数),与FxF大小的卷积核(暂时不考虑个数)做卷积,那么输出大小为多大?计算公式为:(N - F) / stride + 1,其中stride为做卷积是相邻卷积核的距离。

举例3:

  当输入为7x7大小,卷积核为3x3,stride=1,在7x7周围补上一圈0(pad=1个像素),那么输出大小为多大?

是7x7。

举例3:

       输入为32x32x3,卷积核大小为5x5,总共有10个卷积核,做卷积的时候stride=1,pad=2,那么这一层总共含有多少参数?

       每个卷积核含有的参数个数为:5*5*3 + 1 = 76,其中1是偏置bias,由于有10个卷积核,故总参数为76*10=760。

总结:

其中,卷积核的数量K一般是2的整数次幂,这是因为计算方便(计算机计算2^n比较快)

关于池化层的参数计算:

参考: 斯坦福大学CS231N课程PPT http://cs231n.stanford.edu/slides/2016/winter1516_lecture7.pdf

三、边界填充问题

卷积操作有两个问题:  1. 图像越来越小;  2. 图像边界信息丢失,即有些图像角落和边界的信息发挥作用较少。因此需要padding。

卷积核大小通常为奇数  一方面是为了方便same卷积padding对称填充,左右两边对称补零;  n+2p-f+1=n  p=(f-1)/2  另一方面,奇数过滤器有中心像素,便于确定过滤器的位置。

两种padding方式:"same"/"valid"

“VALID”只会丢弃最右边无法扫描到的列(或者最底部无法扫描到的列)。

“SAME”试图在左右添加padding,但如果列添加的数量是奇数,则将额外的添加到右侧(即保持双数时,左右padding相通,偶数时,右侧/底部 比 左侧/顶部 多1),在垂直方向同理)。

 Tensorflow中的定义

The TensorFlow Convolution example gives an overview about the difference between SAME and VALID :

    For the SAME padding, the output height and width are computed as:

    out_height = ceil(float(in_height) / float(strides[1]))

out_width = ceil(float(in_width) / float(strides[2]))

And

    For the VALID padding, the output height and width are computed as:

out_height = ceil(float(in_height - filter_height + 1) / float(strides1))

out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))

ceil为向上取整。


 待完善

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 卷积神经网络CNN的意义

    一、选用卷积的原因 局部感知 简单来说,卷积核的大小一般小于输入图像的大小(如果等于则是全连接),因此卷积提取出的特征会更多地关注局部 —— 这很符合日常...

    郭耀华
  • 各种卷积结构原理及优劣总结

    卷积神经网络作为深度学习的典型网络,在图像处理和计算机视觉等多个领域都取得了很好的效果。

    郭耀华
  • 1×1卷积的用途(Network in Network)

    1×1卷积,又称为Network in Network ? 如果卷积的输出输入都只是一个平面,那么1x1卷积核并没有什么意义,它是完全不考虑像素与周边其他像...

    郭耀华
  • 探索图片的真相--卷积神经网络

    今天给大家带来的是卷积神经网络,听上去是不是挺高大上的?它还有个更响亮的名字CNN,谈到CNN应该好多同学都略知一二吧,CNN在做图像识别上有着很出色的效果,那...

    我被狗咬了
  • 深度学习三人行(第11期)----CNN经典网络之GoogLeNet

    上一期,我们一起学习了深度学习卷积神经网络中的经典网络之LeNet-5和AlexNet,

    智能算法
  • 卷积神经网络CNN的意义

    一、选用卷积的原因 局部感知 简单来说,卷积核的大小一般小于输入图像的大小(如果等于则是全连接),因此卷积提取出的特征会更多地关注局部 —— 这很符合日常...

    郭耀华
  • 读完这个你就彻底懂深度学习中的卷积了!

    朱晓霞
  • 重磅!卷积神经网络为什么能称霸计算机视觉领域?

    朱晓霞
  • 深度学习之基础网络演进、分类与定位的权衡|牛喀技研

    深度学习,目标检测,图像,智能驾驶 编译:牛喀网-钱伟 前言 本篇关注基础网络架构的演进和处理分类、定位这一矛盾问题上的进展。 基础网络结构的演进 基础网络(...

    朱晓霞
  • 开发 | CNN 那么多网络有何区别?看这里了解 CNN 发展历程

    AI科技评论按:本文原载于知乎, AI科技评论获作者授权转载。 深度学习算法最近变得越来越流行和越来越有用的算法,然而深度学习或者深度神经网络的成功得益于层出不...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动