功能
- 转置卷积,使用一个输入张量和一个滤波器并计算输出。
- 如果提供了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,表示卷积核大小。
- output_padding:数据类型为ints,默认为全0数组,表示指定padding值。
- output_shape:数据类型为ints,根据pad自动计算,表示输出shape。
- pads:数据类型为ints,默认为全0矩阵,表示每根轴指定pad值。
- strides:数据类型为ints,默认为全1矩阵,表示每根轴的stride值。
输出
y:卷积结果的输出数据张量,数据类型和shape与输入一致。
约束
- 输入通道[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