ConvTranspose1d¶
- class torch.nn.ConvTranspose1d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros', device=None, dtype=None)[源码][源码]¶
对由多个输入平面组成的输入图像应用 1D 转置卷积操作符。
此模块可视为 Conv1d 相对于其输入的梯度。它也被称为分数步长卷积 (fractionally-strided convolution) 或反卷积 (deconvolution)(尽管它不是一个实际的反卷积操作,因为它并未计算卷积的真实逆)。更多信息,请参阅此处的可视化以及反卷积网络 (Deconvolutional Networks) 论文。
此模块支持 TensorFloat32。
在某些 ROCm 设备上,当使用 float16 输入时,此模块将在反向传播中使用不同的精度。
stride
控制互相关 (cross-correlation) 的步长。padding
控制输入两侧的隐式零填充量,填充点数为dilation * (kernel_size - 1) - padding
。详情请参见下方注释。output_padding
控制添加到输出形状一侧的额外大小。详情请参见下方注释。dilation
控制卷积核点之间的间距;也称为 à trous 算法。这很难描述,但此处的链接提供了关于dilation
作用的精彩可视化。groups
控制输入和输出之间的连接关系。in_channels
和out_channels
都必须能被groups
整除。例如,当 groups=1 时,所有输入都与所有输出进行卷积。
当 groups=2 时,该操作等同于将两个卷积层并排放置,每个层接收一半输入通道并产生一半输出通道,随后将两者拼接。
当 groups=
in_channels
时,每个输入通道都与自己的一组滤波器(大小为 )。
注意
padding
参数实际上会在输入的两侧添加dilation * (kernel_size - 1) - padding
量的零填充。这样设置是为了让当一个Conv1d
和一个ConvTranspose1d
用相同参数初始化时,它们在输入和输出形状方面互为逆操作。然而,当stride > 1
时,Conv1d
会将多个输入形状映射到同一个输出形状。output_padding
的作用是通过有效地增加输出形状的一侧来解决这种模糊性。请注意,output_padding
仅用于确定输出形状,但实际上并不会向输出添加零填充。注意
在使用带有 CuDNN 的 CUDA 后端时,在某些情况下,此操作符可能会选择非确定性算法以提高性能。如果不需要此行为,您可以通过设置
torch.backends.cudnn.deterministic = True
来尝试使操作变为确定性(可能会带来性能损失)。请参阅有关可复现性的注意事项以了解背景信息。- 参数
- 形状
输入: 或
输出: 或 ,其中