AI面试题之(反)卷积输出尺寸计算

    技术2022-07-12  72

    1 给我背住

    【卷积计算公式】 o u t p u t = i n p u t + 2 ∗ p a d d i n g − k e r n e l s t r i d e + 1 output=\frac{input+2*padding-kernel}{stride}+1 output=strideinput+2paddingkernel+1

    【反卷积计算公式】 o u t p u t = s t r i d e ∗ ( i n p u t − 1 ) + 2 ∗ p a d d i n g − k e r n e l + 2 output=stride*(input-1)+2*padding-kernel+2 output=stride(input1)+2paddingkernel+2

    【其实只用记住卷积的计算公式就行了,反卷积的可以从卷积中的推导出来】

    2 为什么是这样算

    2.1 卷积

    其实晚上很多都是仅仅告诉你,计算公式是: o u t p u t = i n p u t + 2 ∗ p a d d i n g − k e r n e l s t r i d e + 1 output=\frac{input+2*padding-kernel}{stride}+1 output=strideinput+2paddingkernel+1 这里简单的来讲解一下为什么。

    i n p u t + 2 ∗ p a d d i n g input+2*padding input+2padding】这个就是原来的图片,外面加了一圈padding,因为padding是一圈,所以左右、上下都有,所以是两倍的。

    i n p u t + 2 ∗ p a d d i n g − k e r n e l input+2*padding-kernel input+2paddingkernel】是计算,这个要走多少步。来举个例子就好理解了:

    图中是input为7,然后kernel_size为3,podding是1的一个例子。 从下图中可以看出来,kernel总共要走6步 这个六步,就是 i n p u t + 2 ∗ p a d d i n g − k e r n e l input+2*padding-kernel input+2paddingkernel的含义,kernel要滑动的步数。

    那么stride就是步长,如果是2的话,那么kernel移动就是这样的(如下图):

    就变成3步了。那么为什么计算公式最后还要加上1呢?就是在kernel还没有迈出步子的时候,最开始的处于左上角的那个位置,也是一个点。

    【总结:卷积输出尺寸计算的时候,前面的分式,就是计算卷积核可以走几步,然后再加上卷积核的初始位置,就是输出尺寸了】


    来看个正经的例子: 【这个例子展示了,如果输入尺寸是一个偶数,卷积核是奇数的情况,如何计算——向下取整】

    2.2 反卷积

    其实反卷积就是另外一种形式的卷积。 反卷积中,stride就是在相邻元素之间添加stride-1个0元素 从图中可以看到,假设输入图片是3*3的,假设反卷积的stride为2,那么输入图像其实就是5*5的。

    所以,实际的输入图像应该是: i n p u t ′ = i n p u t + ( s t r i d e − 1 ) ( i n p u t − 1 ) input'=input+(stride-1)(input-1) input=input+(stride1)(input1)

    剩下的内容就和之前一样了,执行卷积的过程,不过反卷积的stride是用在扩展输入图像上的,而不是kernel移动的步长,所以反卷积中kernel步长永远是1.

    所以计算公式如下: o u t p u t = i n p u t ′ + 2 ∗ p a d d i n g − k e r n e l + 1 output=input'+2*padding-kernel+1 output=input+2paddingkernel+1 带入 i n p u t ′ = i n p u t + ( s t r i d e − 1 ) ( i n p u t − 1 ) input'=input+(stride-1)(input-1) input=input+(stride1)(input1)得到: o u t p u t = s t r i d e ( i n p u t − 1 ) + 2 ∗ p a d d i n g − k e r n e l + 2 output = stride(input-1)+2*padding-kernel+2 output=stride(input1)+2paddingkernel+2

    【总结:反卷积中,就是先扩展输入input的尺寸,然后再去卷积】

    2.3 两个例题

    输入尺寸input=2,kernel_size=3,stride=1,padding=2,计算反卷积的输出尺寸? 【答案:output=4】


    输入尺寸input=3,kernel=3,stride=2,padding=1,计算反卷积的输出尺寸? 【答案:output=5】


    喜欢的话,可以微信扫码关注微信公众号【机器学习炼丹术】,成为炫酷的炼丹师吧~

    公众号回复【下载】有精选的免费机器学习学习资料。 公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

    【机器学习的基础数学(PDF)】【竞赛中的大数据处理流程(PDF)】【如何做大数据的基础特征工程(PDF)】【自然语言处理NLP的应用实践大合集(PDF)】【python入门级教材(400页PDF)】

    公众号每天会更新一个机器学习、深度学习的小知识,都是面试官会问的知识点哦~

    Processed: 0.014, SQL: 9