當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch ConvTranspose3d用法及代碼示例


本文簡要介紹python語言中 torch.nn.ConvTranspose3d 的用法。

用法:

class torch.nn.ConvTranspose3d(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)

參數

  • in_channels(int) -輸入圖像中的通道數

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

  • kernel_size(int或者tuple) -卷積核的大小

  • stride(int或者tuple,可選的) -卷積的步幅。默認值:1

  • padding(int或者tuple,可選的) -dilation * (kernel_size - 1) - padding 零填充將添加到輸入中每個維度的兩側。默認值:0

  • output_padding(int或者tuple,可選的) -添加到輸出形狀中每個維度的一側的附加大小。默認值:0

  • groups(int,可選的) -從輸入通道到輸出通道的阻塞連接數。默認值:1

  • bias(bool,可選的) -如果 True ,則向輸出添加可學習的偏差。默認值:True

  • dilation(int或者tuple,可選的) -內核元素之間的間距。默認值:1

變量

  • ~ConvTranspose3d.weight(Tensor) -形狀模塊的可學習權重(\text{in\_channels}, \frac{\text{out\_channels}}{\text{groups}}, \text{kernel\_size[0]}, \text{kernel\_size[1]}, \text{kernel\_size[2]}) .這些權重的值是從\mathcal{U}(-\sqrt{k}, \sqrt{k}) 其中k = \frac{groups}{C_\text{out} * \prod_{i=0}^{2}\text{kernel\_size}[i]}

  • ~ConvTranspose3d.bias(Tensor) -形狀模塊的可學習偏差 (out_channels) 如果 biasTrue ,那麽這些權重的值是從 中采樣的,其中

在由多個輸入平麵組成的輸入圖像上應用 3D 轉置卷積算子。轉置卷積算子將每個輸入值元素乘以一個可學習的內核,並對所有輸入特征平麵的輸出求和。

這個模塊可以看作是 Conv3d 相對於其輸入的梯度。它也稱為fractionally-strided 卷積或反卷積(盡管它不是實際的反卷積操作,因為它不計算真正的卷積逆)。有關詳細信息,請參閱可視化 這裏Deconvolutional Networks 論文。

該模塊支持 TensorFloat32。

  • stride 控製互相關的步幅。

  • padding 控製 dilation * (kernel_size - 1) - padding 點數兩側的隱式零填充量。有關詳細信息,請參閱下麵的注釋。

  • output_padding 控製添加到輸出形狀一側的附加大小。有關詳細信息,請參閱下麵的注釋。

  • dilation控製內核點之間的間距;也稱為 à trous 算法。很難說明,但鏈接這裏 很好地可視化了dilation 的作用。

  • groups 控製輸入和輸出之間的連接。 in_channelsout_channels 都必須能被 groups 整除。例如,

    • 在 groups=1 時,所有輸入都卷積到所有輸出。

    • 在 groups=2 時,該操作等效於並排有兩個卷積層,每個卷積層看到一半的輸入通道並產生一半的輸出通道,並且隨後將兩者連接起來。

    • 在 groups= in_channels ,每個輸入通道都與自己的一組過濾器(大小為 )進行卷積。

參數 kernel_sizestridepaddingoutput_padding 可以是:

  • 單個 int - 在這種情況下,深度、高度和寬度尺寸使用相同的值

  • 三個整數的 tuple - 在這種情況下,第一個 int 用於深度維度,第二個 int 用於高度維度,第三個 int 用於寬度維度

注意

padding 參數有效地將 dilation * (kernel_size - 1) - padding 零填充量添加到輸入的兩種大小。這樣設置是為了當使用相同參數初始化 Conv3d ConvTranspose3d時,它們的輸入和輸出形狀彼此相反。但是,當 stride > 1 時, Conv3d 將多個輸入形狀映射到同一輸出形狀。 output_padding 的提供是為了通過有效增加一側的計算輸出形狀來解決這種歧義。請注意,output_padding 僅用於查找輸出形狀,但實際上並不向輸出添加零填充。

注意

在某些情況下,當在 CUDA 設備上給定張量並使用 CuDNN 時,此運算符可能會選擇非確定性算法來提高性能。如果這是不可取的,您可以嘗試通過設置 torch.backends.cudnn.deterministic = True 來使操作具有確定性(可能以性能為代價)。有關詳細信息,請參閱重現性。

形狀:
  • 輸入:

  • 輸出:

例子:

>>> # With square kernels and equal stride
>>> m = nn.ConvTranspose3d(16, 33, 3, stride=2)
>>> # non-square kernels and unequal stride and with padding
>>> m = nn.ConvTranspose3d(16, 33, (3, 5, 2), stride=(2, 1, 1), padding=(0, 4, 2))
>>> input = torch.randn(20, 16, 10, 50, 100)
>>> output = m(input)

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.nn.ConvTranspose3d。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。