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)[source][source]¶
對由數個輸入平面組成的輸入影像套用一維轉置卷積運算。
此模組可以視為 Conv1d 對於其輸入的梯度。它也被稱為部分步幅卷積或反卷積(雖然它不是實際的反卷積運算,因為它不計算卷積的真正逆運算)。如需更多資訊,請參閱這裡的可視化和反卷積網路論文。
此模組支援 TensorFloat32。
在某些 ROCm 裝置上,當使用 float16 輸入時,此模組將對向後傳播使用不同的精度。
stride
控制互相關的步幅。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
僅用於尋找輸出形狀,但實際上不會將零填充添加到輸出。注意
在某些情況下,當將 CUDA 後端與 CuDNN 搭配使用時,此運算子可能會選擇一種非確定性演算法來提高效能。 如果不希望這樣,您可以嘗試透過設定
torch.backends.cudnn.deterministic = True
使運算具有確定性(可能以效能為代價)。 有關背景資訊,請參閱有關可重現性的注意事項。- 參數
- 形狀
輸入: 或
輸出: 或 ,其中