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

1 给我背住

【卷积计算公式】
output=input+2paddingkernelstride+1output=\frac{input+2*padding-kernel}{stride}+1

【反卷积计算公式】
output=stride(input1)+2paddingkernel+2output=stride*(input-1)+2*padding-kernel+2

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

2 为什么是这样算

2.1 卷积

其实晚上很多都是仅仅告诉你,计算公式是:
output=input+2paddingkernelstride+1output=\frac{input+2*padding-kernel}{stride}+1
这里简单的来讲解一下为什么。

input+2paddinginput+2*padding】这个就是原来的图片,外面加了一圈padding,因为padding是一圈,所以左右、上下都有,所以是两倍的。

input+2paddingkernelinput+2*padding-kernel】是计算,这个要走多少步。来举个例子就好理解了:
AI面试题之(反)卷积输出尺寸计算

图中是input为7,然后kernel_size为3,podding是1的一个例子。
从下图中可以看出来,kernel总共要走6步
AI面试题之(反)卷积输出尺寸计算
这个六步,就是
input+2paddingkernelinput+2*padding-kernel的含义,kernel要滑动的步数。

那么stride就是步长,如果是2的话,那么kernel移动就是这样的(如下图):
AI面试题之(反)卷积输出尺寸计算

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

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


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

2.2 反卷积

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

所以,实际的输入图像应该是:
input=input+(stride1)(input1)input'=input+(stride-1)(input-1)

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

所以计算公式如下:
output=input+2paddingkernel+1output=input'+2*padding-kernel+1
带入input=input+(stride1)(input1)input'=input+(stride-1)(input-1)得到:
output=stride(input1)+2paddingkernel+2output = stride(input-1)+2*padding-kernel+2

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

2.3 两个例题

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


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


喜欢的话,加个关注呗!
公众号回复【下载】还有持续更新的免费的精选机器学习资料哦~

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