ConvTranspose
ConvTranspose是standard convolution的转置。一般地,它被用来对图像进行上采样。上采样的过程中,ConvTranspose中神经元的连接模式要和原始的convolution保持一致。一个标准卷积所对应的转置卷积如 A guide to convolution arithmetic for deep learning 所示。为了使用图像的上采样,转置卷积都会对图像增加0填充,之后再对其进行卷积。
在pytorch的官方文档中,它并没有明确指出ConvTranpose中的卷积核大小,步长以及填充,特别是步长,是否和原始卷积保持一致即可。不同的配置可以会出现相同的结果,但是其可能破坏了原始的连接模式。经过实验表明,在pytorch中,一个转置卷积的参数设置只需保持和其原始标准卷积的相同配置即可。如下代码所示:
import torch
from torch import nn
input = torch.rand((1, 1, 103, 5, 5))
conv = nn.Conv3d(1, 1, 3, (3, 1, 1), (1, 0, 0))
intermediate = conv(input)
intermediate.shape
tconv = nn.ConvTranpose3d(1, 1, 3, (3, 1, 1), (1, 0, 0))
out = tconv(intermediate)
out.shape