快捷方式

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_channelsout_channels 都必須能被 groups 整除。例如,

    • 當 groups=1 時,所有輸入都與所有輸出進行卷積。

    • 當 groups=2 時,該操作等同於將兩個卷積層並排放置,每個層接收一半輸入通道併產生一半輸出通道,隨後將兩者拼接。

    • 當 groups=in_channels 時,每個輸入通道都與自己的一組濾波器(大小為 out_channelsin_channels\frac{\text{out\_channels}}{\text{in\_channels}})。

注意

padding 引數實際上會在輸入的兩側新增 dilation * (kernel_size - 1) - padding 量的零填充。這樣設定是為了讓當一個 Conv1d 和一個 ConvTranspose1d 用相同引數初始化時,它們在輸入和輸出形狀方面互為逆操作。然而,當 stride > 1 時,Conv1d 會將多個輸入形狀對映到同一個輸出形狀。output_padding 的作用是透過有效地增加輸出形狀的一側來解決這種模糊性。請注意,output_padding 僅用於確定輸出形狀,但實際上並不會向輸出新增零填充。

注意

在使用帶有 CuDNN 的 CUDA 後端時,在某些情況下,此運算子可能會選擇非確定性演算法以提高效能。如果不需要此行為,您可以透過設定 torch.backends.cudnn.deterministic = True 來嘗試使操作變為確定性(可能會帶來效能損失)。請參閱有關可復現性的注意事項以瞭解背景資訊。

引數
  • in_channels (int) – 輸入影像的通道數

  • out_channels (int) – 卷積產生的通道數

  • kernel_size (inttuple) – 卷積核的大小

  • stride (inttuple, 可選) – 卷積步長。預設值: 1

  • padding (inttuple, 可選) – 輸入兩側將新增 dilation * (kernel_size - 1) - padding 零填充。預設值: 0

  • output_padding (inttuple, 可選) – 新增到輸出形狀一側的額外大小。預設值: 0

  • groups (int, 可選) – 從輸入通道到輸出通道的阻塞連線數。預設值: 1

  • bias (bool, 可選) – 如果為 True,則向輸出新增一個可學習的偏置。預設值: True

  • dilation (inttuple, 可選) – 卷積核元素之間的間距。預設值: 1

形狀
  • 輸入: (N,Cin,Lin)(N, C_{in}, L_{in})(Cin,Lin)(C_{in}, L_{in})

  • 輸出: (N,Cout,Lout)(N, C_{out}, L_{out})(Cout,Lout)(C_{out}, L_{out}),其中

    Lout=(Lin1)×stride2×padding+dilation×(kernel_size1)+output_padding+1L_{out} = (L_{in} - 1) \times \text{stride} - 2 \times \text{padding} + \text{dilation} \times (\text{kernel\_size} - 1) + \text{output\_padding} + 1
變數
  • weight (Tensor) – 模組的可學習權重,形狀為 (in_channels,out_channelsgroups,(\text{in\_channels}, \frac{\text{out\_channels}}{\text{groups}}, kernel_size)\text{kernel\_size})。這些權重的值從 U(k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}) 中取樣,其中 k=groupsCoutkernel_sizek = \frac{groups}{C_\text{out} * \text{kernel\_size}}

  • bias (Tensor) – 模組的可學習偏置,形狀為 (out_channels)。如果 biasTrue,則這些權重的值從 U(k,k)\mathcal{U}(-\sqrt{k}, \sqrt{k}) 中取樣,其中 k=groupsCoutkernel_sizek = \frac{groups}{C_\text{out} * \text{kernel\_size}}

文件

檢視 PyTorch 的完整開發者文件

檢視文件

教程

為初學者和進階開發者提供深入教程

檢視教程

資源

查詢開發資源並解答你的問題

檢視資源