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來嘗試使操作變為確定性(可能會帶來效能損失)。請參閱有關可復現性的注意事項以瞭解背景資訊。- 引數
- 形狀
輸入: 或
輸出: 或 ,其中