神经网络的计算

1、感受野的计算

     

感受野的计算公式如下(第k层的一个像素,映射到第一层特征图的像素尺寸):

                                    l_{k} = l_{k-1}+ \left [ (f_{k}-1)*\prod_{i=1}^{k-1}s_{i} \right ]注意累乘到(k-1)
其中 l_{k-1} 为第 k-1 层对应的感受野大小,f_k为第 k 层的卷积核大小,或者是池化层的池化尺寸大小。s_i为第i层步长。

from:https://www.jianshu.com/p/e875117e5372

已知第i+1层的区域r,求区域r在第i层的映射区域大小:

                          

举个例子

感受野的计算是逐层进行的,以下表中的网络结构为例。

2、卷积核反卷积特征点尺寸

对于convolution:

                    output = (input + 2 * padding  - ksize)  / stride + 1;

,向下取整

对于deconvolution:

                  output = (input - 1) * stride + ksize - 2 * padding;
                         
注意这里的padding指的是卷积操作使用的pad(p),反卷积时的pad(p')两者关系是p'=k-p-1

即           output = (input - 1) * stride + ksize - 2 * (ksize-p'-1);

from :https://blog.csdn.net/ITleaks/article/details/80336825

    例如:下图表示的是参数为( i′=2,k′=3,s′=1,p′=2)的反卷积操作,其对应的卷积操作参数为 (i=4,k=3,s=1,p=0)。我们可以发现对应的卷积和非卷积操作其 (k=k′,s=s′),但是反卷积却多了p′=2。通过对比我们可以发现卷积层中左上角的输入只对左上角的输出有贡献,所以反卷积层会出现 p′=k−p−1=2。通过示意图,我们可以发现,反卷积层的输入输出在 s=s′=1的情况下关系为:

                                                 o′=i′−k′+2p′+1=i′+(k−1)−2p

                                       

     上面也提到过反卷积有时候也被叫做Fractionally Strided Convolution,翻译过来大概意思就是小数步长的卷积。对于步长 s>1的卷积,我们可能会想到其对应的反卷积步长 s′<1。 如下图所示为一个参数为 i=5,k=3,s=2,p=1的卷积操作(就是第一张图所演示的)所对应的反卷积操作。对于反卷积操作的小数步长我们可以理解为:在其输入特征单元之间插入 s−1 个0,插入0后把其看出是新的特征输入,然后此时步长 s′不再是小数而是为1。因此,结合上面所得到的结论,我们可以得出Fractionally Strided Convolution的输入输出关系为:

                                                    o′=s(i′−1)+k−2p

                                      

换种思路,对3*3反卷积,就是对扩充后的特征图进行卷积,则根据卷积的求法:

                       扩充后特征图尺寸=(i-1)*s+2p'+1   (从上图中看到p'=1)

                       则卷积后的尺寸:[(i-1)*s+2p'+1-k]/1 +1= s(i−1)+k−2(k-1-p')

from:https://blog.csdn.net/kekong0713/article/details/68941498

3、caffe使用BGR存储图像

4、批量归一化层的参数个数

     BN层是对于每个神经元做归一化处理,在CNN中卷积层上要怎么搞?假如某一层卷积层有6个特征图,每个特征图的大小是100*100,这样就相当于这一层网络有6*100*100个神经元,如果采用BN,就会有6*100*100个参数γ、β。因此卷积层上的BN使用,其实也是使用了类似权值共享的策略,把一整张特征图当做一个神经元进行处理。

       卷积神经网络经过卷积后得到的是一系列的特征图,如果min-batch sizes为m,那么网络某一层输入数据可以表示为四维矩阵(m,c,p,q),m为min-batch sizes,c为特征图个数,p、q分别为特征图的宽高。在cnn中我们可以把每个特征图看成是一个特征处理(一个神经元),因此在使用Batch Normalization,mini-batch size的大小就是:m*p*q,于是对于每个特征图都只有一对可学习参数:γ、β。

就是说批量归一化层的参数个数为特征图通道数的2倍,即:c*2)

5、SAME和VALID

same padding是指在输入周围填充0,以使卷积操作后输入输出大小相同

valid padding来说就是在卷积运算前,对输入没有pad操作

对于SAME,输出的形状计算如下:

                                        

输出大小等于输入大小除以步长向上取整,s是步长大小;

对于valid,输出的形状计算如下:

                    

输出大小等于输入大小减去滤波器大小加上1,最后再除以步长(f为滤波器的大小,s是步长大小)。

注意:上面的括号是向上取整,可以和上面的第二题比较,第二题公式是向下取整。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值