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 的值必须小于 stride 或 dilation 。默认值:
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 - stride, padding, output_padding 或 dilation 既不是int也不是tuple或list。
TypeError - groups 不是int。
ValueError - bias 的shape不是 \((out\_channels)\) 。
ValueError - stride 或 dilation 小于1。
ValueError - padding 或 output_padding 小于0。
ValueError - stride, padding, output_padding 或 dilation 是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)