解卷积和调整大小之间的实际区别,然后是卷积扩展

时间:2017-11-16 23:21:22

标签: neural-network conv-neural-network deconvolution

我需要从图层input = HxWxn1进行(上采样),其中H:高度,W:宽度和n1:过滤器数量,到层output = 2Hx2Wxn2,其中2H = 2 *高度等和n2=n1/2:新过滤器的数量。实现此目的的一种方法是使用转置卷积运算符。然而,众所周知,反卷积(转置卷积)算子可以导致checkerboard artifacts。克服此问题的一种方法是执行调整大小,然后应用卷积映射。例如。

output = transpose_conv2d(input,n2,kernel!=(1,1),stride!=1)

vs

output = resize(input) # e.g. bilinear interpolation
output = conv2d(output,n2,kernel=(1,1),stride=1)

显然,在第二种情况下,我们只是改变了过滤器的数量,而且我们不会学习"任何功能(我们不会总结来自input图层的信息)。但这可以通过内核大小kernel!= 1的另一个卷积来解决。 E.g。

output = resize(input)
output = conv2d(output,n2,kernel=(1,1),stride=1)
# appropriate padding
output = conv2d(output, n2, kernel != (1,1), ...)

两种上采样方法之间是否存在实际差异(除计算复杂性外)?我知道后者解决了棋盘格的问题。

0 个答案:

没有答案