• CNN之间的计算


    参考内容

    1、网易云课堂微专业——深度学习—04第一周:http://mooc.study.163.com/smartSpec/detail/1001319001.htm

    2、CNN基础介绍:http://blog.csdn.net/fengbingchun/article/details/50529500



     卷积神经网络(Convolutional Neural Networks,CNN)

    1、基本计算原理

      

      动态过程:

      滤波器(过滤器:filter)的权值是根据你要检测的特征来决定的,在深度学习中,也即是要经过训练得到。检测的特征不同,权值就不一样。

      如上单层的图像一般表示的是灰白图,既是没有颜色的,有颜色的RGB图像,会包含三个相同大小的图层,这时对应的滤波器也要变成三层,滤波器的层数(通道数)必须时刻与图像层数保持一致。。。

      

      注意输出的是一个单层图

      

      因为当一个三通道的过滤器与图像进行卷积时,是直接对27个数去加权计算它们的和得到一个结果,而不是分层计算。

    2、卷积输出的大小计算

       如上两个例子,5*5的图像经过3*3的滤波器得到一个3*3的结果,6*6*3d的图像经过3*3*3d的滤波器得到一个4*4*1d的结果,从单层的例子我们大概已经知道了是怎么计算的了,那么接下来转换成公式来表示一下。

       

      由计算可知,每次卷积图像都会变小,以上还只是步长为1的情况(也即是每次只移动一个),有两个缺点:

        1、每次卷积之后图像都会缩小,多次卷积之后呢, 可能会变得很小很小

        2、会丢掉角落边缘像素的重要信息,看下面图像

      

        在上面的边缘,从左到右像素检测的次数分别为1、2、3、2、1,可见角落边缘只被检测了一次,而中间可以被检测多次,这就会导致边角信息丢失。解决的办法是加入Padding。

    3、加入Padding以及之后的计算

      加入Padding的意思是在卷积之前,在原图像边缘上加入一层像素(也可以多层),一般也叫做补零(因为大多数时候我们添加的元素都是0)。

       

      由上图可知,如果卷积之后要得到与原图像相同大小的图像,那么加入的Padding层数应该是(f - 1) / 2,也由此可见,我们用的过滤器 f 一般也是奇数的,这样才能整除计算,获得对称填充,还有一个原因是奇数的滤波器会有一个中心点,有时候在计算机视觉计算时,有个中心点会方便很多。

      附:

        Padding = 0的卷积被称为Valid Convolution

        为了得到与原图像大小相同图像而加入Padding的卷积称为Same Convolution

    3、加入卷积步长(Stride)

      以上运算都是基于步长为1的情况,下面看看步长为2的情况:

      

      在卷积运算时,如果滤波器超出了图像框,一般的操作是不进行运算。

     4、三维卷积

      (1)原始RGB三维图

        

        

      (2)多个滤波器(卷积核)

        以上操作都是基于单个滤波器的,无论是单层还是多层,一个滤波器只能检测一种特征,要检测多个特征,我们需要多个滤波器。

        

     5、汇总

      

  • 相关阅读:
    1312. Minimum Insertion Steps to Make a String Palindrome
    【堆】23. Merge k Sorted Lists
    LeetCode 406 根据身高重建队列
    LeetCode 922 按奇偶排序数组II
    LeetCode 31 下一个排列
    LeetCode 941 有效的山脉数组
    LeetCode 面试题4 二维数组中的查找
    LeetCode 463 岛屿的周长
    LeetCode 129 求根到叶子节点数字之和
    LeetCode 1207 独一无二的出现次数
  • 原文地址:https://www.cnblogs.com/huangtao36/p/7818072.html
Copyright © 2020-2023  润新知