---
title: ConvTranspose
description: "- 转置卷积，使用一个输入张量和一个滤波器并计算输出。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/aolapi/atlasoxol_09_0041.html
sourcePath: /source/zh/canncommercial/900/API/aolapi/atlasoxol_09_0041.html
indexId: 6f41487b805459cc00c5ec8233598df70b51ba0af9c14e9fc67ed8406e0345b563
---
# ConvTranspose

#### 功能

- 转置卷积，使用一个输入张量和一个滤波器并计算输出。
- 如果提供了pads参数，则通过以下公式计算输出的形状：


- output_shape也可以明确指定，在这种情况下，使用以下公式自动生成pads：
  - 如果auto_pads == SAME_UPPER
  - 否则


#### 输入

- X：来自上一层的输入Tensor，对于二维卷积其shape为[N, C, H, W]，其中N是批量大小，C是通道数，H和W是高度和宽度；对于超过2个维度其shape为[N, C, D, H, W]，数据类型支持float16。
- W：权重Tensor，对于二维卷积其shape为[C, M/group, kH, kW]，其中C是通道数，kH和kW是内核的高度和宽度，M是特征图的数量。对于超过2个维度权重shape为[C, M/group, kD, kH, kW）。输出中的通道数应等于 W.shape[1] * group（假设形状数组的索引从零开始），数据类型支持float16。
- B（可选）：输入一维Tensor，shape为[M]，数据类型支持float16。


#### 属性

- auto_pad：数据类型为string，支持NOTSET、SAME_UPPER、SAME_LOWER或VALID，默认为NOTSET，显式使用padding的方式。SAME_UPPER或SAME_LOWER表示填充输入，输出y的shape为y_H = x_H * stride_H，y_W = x_W * stride_W；auto_pad设为VALID时不使用padding。
- dilations：数据类型为ints，默认为全1序列，表示filter的每轴空洞值。
- group：数据类型为int，默认为1，表示输入通道分组数。
- kernel_shape：数据类型为ints，需要输入filter的shape，表示卷积核大小。二维卷积输入为[kH, kW]，三维卷积输入为[kD, kH, kW]。
- output_padding：数据类型为ints，默认为全0数组，表示指定padding值，输入四维Tensor时为4个整数的列表，五维Tensor时为5个整数的列表 。
- output_shape：数据类型为ints，根据pad自动计算，表示输出shape。
- pads：数据类型为ints，默认为全0矩阵，表示每根轴指定pad值。
- strides：数据类型为ints，默认为全1矩阵，表示每根轴的stride值。


#### 输出

y：卷积结果的输出数据张量，数据类型和输入一致。


#### 约束

- 输入通道[C]需要被group整除；bias的shape[M] 、filter的第1维维度[M/group]、输出y的第1维[M]需要满足约束。
- 属性auto_pad在二维场景支持 "SAME_UPPER"、"SAME_LOWER"、"VALID"，三维场景不支持。
- 属性auto_pad在二维场景设置为 "SAME_UPPER"、"SAME_LOWER"、"VALID"时，属性pads若提供则会被修正。


#### 支持的ONNX版本

Opset v8/v9/v10/v11/v12/v13/v14/v15/v16/v17/v18
