mindspore.mint.nn.functional.conv_transpose2d

查看源文件
class mindspore.mint.nn.functional.conv_transpose2d(input, weight, bias=None, stride=1, padding=0, output_padding=0, groups=1, dilation=1)[源代码]

将2D转置卷积运算应用于由多个输入平面组成的输入图像,有时也称为反卷积(尽管它不是实际的反卷积)。

更多参考详见 mindspore.mint.nn.ConvTranspose2d()

警告

  • 这是一个实验性API,后续可能修改或删除。

  • 在输入非连续场景下, output_padding 必须小于 stride

  • 在Atlas训练系列产品上,float32类型输入时,仅支持 groups 为1。

参数:
  • input (Tensor) - 输入Tensor,shape为 \((minibatch, in\_channels, iH, iW)\)\((in\_channels, iH, iW)\)

  • weight (Tensor) - 卷积核,shape为 \((in\_channels, \frac{out\_channels}{\text{groups}}, kH, kW)\)

  • bias (Tensor, 可选) - 偏置,shape为 \((out\_channels)\) 。默认值: None

  • stride (Union[int, tuple(int), list[int]], 可选) - 卷积的步长。可以为1个整数或1个元组 \((sH, sW)\) 。默认值: 1

  • padding (Union[int, tuple(int), list[int]], 可选) - \(dilation * (kernel\_size - 1) - padding\) 零填充将添加到输入中每个维度的两侧。可以为1个整数或1个元组 \((padH, padW)\) 。默认值: 0

  • output_padding (Union[int, tuple(int), list[int]], 可选) - 在输出形状中每个维度的一侧增加额外的尺寸。可以为1个整数或1个元组 \((out\_padH, out\_padW)\)output_padding 的值必须小于 stridedilation 。默认值: 0

  • groups (int, 可选) - 将输入分成 groups 组。\(in\_channels\) 应能被 groups 整除。默认值: 1

  • dilation (Union[int, tuple(int), list[int]], 可选) - 内核元素之间的间距。可以为1个整数或1个元组 \((dH, dW)\) 。默认值: 1

返回:

Tensor, shape为 \((minibatch, out\_channels, oH, oW)\)\((out\_channels, oH, oW)\) 。其中:

\[oH = (iH - 1) \times sH - 2 \times padH + dH \times (kH - 1) + out\_padH + 1\]
\[oW = (iW - 1) \times sW - 2 \times padW + dW \times (kW - 1) + out\_padW + 1\]
异常:
  • TypeError - stridepaddingoutput_paddingdilation 既不是int也不是tuple或list。

  • TypeError - groups 不是int。

  • ValueError - bias 的shape不是 \((out\_channels)\)

  • ValueError - stridedilation 小于1。

  • ValueError - paddingoutput_padding 小于0。

  • ValueError - stridepaddingoutput_paddingdilation 是tuple且其长度不等于2。

支持平台:

Ascend

样例:

>>> import mindspore
>>> import numpy as np
>>> from mindspore import Tensor, mint
>>> x = Tensor(np.ones([1, 4, 5, 5]), mindspore.float32)
>>> weight = Tensor(np.ones([4, 8, 3, 3]), mindspore.float32)
>>> output = mint.nn.functional.conv_transpose2d(x, weight)
>>> print(output.shape)
(1, 8, 7, 7)