算法面经总结(4)卷积与池化

一、卷积

1、卷积原理

卷积是一种局部操作,通过 一定大小的卷积核作用于局部图像区域获得图像的局部信息

2、图像卷积后输出计算公式

                N = (W − F + 2P )/S+1

        W是输入大小,F是卷积核大小,P是填充,S是步长

 3、padding的作用

        保持边界信息。

        可以利用padding对输入尺寸有差异图片进行补齐,输入图片尺寸一致。

        在CNN的卷积层中可以使得输入维和输出维一致。

        卷积神经网络的池化层中,一般都是为了保持边界信息。

4、1*1卷积的作用

        增加网络的深度,同时 加入了非线性。

        用来升维或者降维。

        跨通道信息交互(channel变换)

5、卷积层与全连接层的区别

        全连接层的权重矩阵是固定的,即每次特征图的输入必须是指定大小,所以网络一开始的输入图片尺寸必须是固定的,才能保持传到全连接层的特征图的大小和权重矩阵匹配。

        卷积层就不需要固定大小。

6、常规卷积和深度可分离卷积

      常规卷积

         深度可分离卷积

 7、为什么深度可分离卷积要逐通道后逐点

        Depthwise Convolution完成后的Feature map数量与输入层的通道数相同,无法扩展Feature map。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效的利用不同通道在相同空间位置上的feature信息。因此需要Pointwise Convolution来将这些Feature map进行组合生成新的Feature map。

8、CNN网络有什么特点

        局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。

        局部连接:可以提取局部特征

        权值共享:减少参数数量,降低训练难度

        降维:通过池化或者卷积实现

        多层次结构:将低层次的局部特征组合成较高层次的特征

9、卷积代码实现

def conv(intput,filter,srider):
    N,H,W,C=input.shape        #N,H,W,C分别表示图片数量,长,宽,通道数量
    FN,FH,FW,FC=filter.shape   #FN,FH,FW,FC分别表示卷积核数量,长,宽,通道数量
    assert c==FC
    pad=0
    H_out=1+(H-FH+2*pad)//stride    #计算输出大小
    W_out=1+(W-FW+2*pad)//stride
    conv_res=np.zeros((N,H_out,W_out,FN))
    for n in range(N):
        for c in range(FN):
            for i in range(H_out):
                for j in range(W_out):
                    conv_res[n,i,j,c]=np.sum(
                    input[n,i*stride:i*stride+FH,j*stride:j*stride+FW,:]
                    *filter[c,:,:,:])
    return conv_res

10、计算机中卷积的实现

对于1x1卷积,原始储存结构和im2col存储结构计算是一样的,故1x1卷积不需要im2col的过程 

二、池化

1、作用

        池化层不包含可学习的参数。将卷积层后得到的小邻域内的特征点整合得到新的特征。一方面防止无用参数增加时间复杂度,一方面增加了特征的整合度。缺点是梯度稀疏、丢失信息。

优点:

(1) 特征不变性:池化操作让模型更关注是否存在某些特征而不是特征的具体位置。可看做是一种很强的闲言,使特征学习包含某种程度的自由度,能容忍一些特征微小的位移,提取对于平移和小变形不变的特征.
(2) 特征降维:降采样,池化结果中一个元素对应于原输入数据的一个子区域,因此池化相当于在空间范围内做了维度约检,从而使模型可以抽取更广范围的特征。同时减小下一层输入的大小,进而减小计算量和参数个数
(3) 在一定程度上防止过拟合,方便优化

注:

特征提取的误差主要来自两个方面:

(1)邻域大小受限造成的估计值 方差增大

(2)卷积层参数误差造成估计 均值的偏移

2、平均池化

        减少第一种误差,更多的保留图像的背景信息

        平均池化的前向操作,就是将patch内的特征值求mean,然后作为新特征图该位置的元素。

        反向传播就是将某个元素的梯度平均分为n份给前一层,这样就保证池化前后的梯度(残差)之和保持不变。

注意:这里的核心是平均分为n份之后给前一层,如果是直接复制原值传给上一层,很容易导致梯度爆炸。

 3、最大池化

        减少第二种误差, 更多的保留纹理信息。

        前向传播机制其实就是将patch中最大的元素值作为之后一层的元素值,而其他元素舍弃。

        反向传播机制其实就是将梯度直接传给前一层的某一个位置,其它位置不接受梯度,为0。

 4、ROI池化

        根据输入image,将ROI映射到特征图对应的位置

        将映射后的区域划分为相同大小的section(数量与输出维度相同)

        对每个section进行最大池化操作

                 变为                 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值