ConvTranspose

ConvTranspose - 22

版本

  • 名称: ConvTranspose (GitHub)

  • 域名: main

  • since_version: 22

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本22起可用。

摘要

转置卷积运算符消耗一个输入张量和一个过滤器,并计算输出。

如果提供了 pads 参数,输出的形状将通过以下公式计算:

output_shape[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - pads[start_i] - pads[end_i]

output_shape 也可以显式指定,在这种情况下,pads 值将使用以下公式自动生成:

total_padding[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - output_shape[i] 如果 (auto_pads == SAME_UPPER): pads[start_i] = total_padding[i]/2; pads[end_i] = total_padding[i] - (total_padding[i]/2) 否则: pads[start_i] = total_padding[i] - (total_padding[i]/2); pads[end_i] = (total_padding[i]/2).

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入,使得 output_shape[i] = input_shape[i] * strides[i] 对于每个轴 i。填充在两侧均匀或几乎均匀地分配(取决于它是偶数还是奇数)。如果填充是奇数,额外的填充在 SAME_UPPER 时添加到末尾,在 SAME_LOWER 时添加到开头。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。如果未指定,则默认每个空间轴的膨胀值为1。

  • group - INT (默认是 '1'):

    输入通道和输出通道被分成的组数。

  • kernel_shape - INTS :

    卷积核的形状。如果未提供,应从输入W中推断。

  • output_padding - INTS :

    在输出中,向具有较高坐标索引的一侧添加的额外元素。“output_padding”中的每个填充值必须小于相应的步幅/扩张维度。默认情况下,此属性为零向量。请注意,此属性不会直接影响计算的输出值。它仅控制计算值的选择,因此更改此属性只会添加或删除输出元素。如果明确提供了“output_shape”,“output_padding”不会为“output_shape”贡献额外的尺寸,但会参与计算所需的填充量。在某些框架中,这也称为adjs或调整。

  • output_shape - INTS :

    输出的形状可以显式设置,这将导致自动生成填充值。如果指定了output_shape,则忽略填充值。有关生成填充值的公式的详细信息,请参阅文档。请注意,output_shape属性值不应包括批次大小和通道的维度,这些维度会自动推断。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • 步幅 - 整数 :

    沿每个空间轴的步幅。如果未指定,则沿每个空间轴的步幅默认为1。

输入

在2到3个输入之间。

  • X (异构) - T:

    来自前一层的输入数据张量;大小为 (N x C x H x W),其中 N 是批量大小,C 是通道数,H 和 W 是高度和宽度。请注意,这是针对 2D 图像的。否则大小为 (N x C x D1 x D2 … x Dn)

  • W (异构) - T:

    将在卷积中使用的权重张量;大小为 (C x M/group x kH x kW),其中 C 是通道数,kH 和 kW 是内核的高度和宽度,M 是特征图的数量。对于超过 2 维的情况,权重形状将为 (C x M/group x k1 x k2 x … x kn),其中 (k1 x k2 x … x kn) 是内核的维度。输出中的通道数应等于 W.shape[1] * group(假设形状数组的索引从零开始)

  • B (可选, 异构) - T:

    可选的1D偏置,将被添加到卷积中,大小为M。

输出

  • Y (异构) - T:

    输出数据张量,包含卷积的结果。输出维度是核大小、步幅大小、填充长度和组数的函数。输出中的通道数应等于 W.shape[1] * group(假设形状数组的索引从零开始)。

类型约束

  • T 在 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) ):

    将输入和输出类型限制为浮点张量。

ConvTranspose - 11

版本

  • 名称: ConvTranspose (GitHub)

  • 域名: main

  • since_version: 11

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本11起可用。

摘要

转置卷积运算符消耗一个输入张量和一个过滤器,并计算输出。

如果提供了 pads 参数,输出的形状将通过以下公式计算:

output_shape[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - pads[start_i] - pads[end_i]

output_shape 也可以显式指定,在这种情况下,pads 值将使用以下公式自动生成:

total_padding[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - output_shape[i] 如果 (auto_pads == SAME_UPPER): pads[start_i] = total_padding[i]/2; pads[end_i] = total_padding[i] - (total_padding[i]/2) 否则: pads[start_i] = total_padding[i] - (total_padding[i]/2); pads[end_i] = (total_padding[i]/2).

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入,使得 output_shape[i] = input_shape[i] * strides[i] 对于每个轴 i。填充在两侧均匀或几乎均匀地分配(取决于它是偶数还是奇数)。如果填充是奇数,额外的填充在 SAME_UPPER 时添加到末尾,在 SAME_LOWER 时添加到开头。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。如果未指定,则默认每个空间轴的膨胀值为1。

  • group - INT (默认是 '1'):

    输入通道和输出通道被分成的组数。

  • kernel_shape - INTS :

    卷积核的形状。如果未提供,应从输入W中推断。

  • output_padding - INTS :

    在输出中,向具有较高坐标索引的一侧添加的额外元素。“output_padding”中的每个填充值必须小于相应的步幅/扩张维度。默认情况下,此属性为零向量。请注意,此属性不会直接影响计算的输出值。它仅控制计算值的选择,因此更改此属性只会添加或删除输出元素。如果明确提供了“output_shape”,“output_padding”不会为“output_shape”贡献额外的尺寸,但会参与计算所需的填充量。在某些框架中,这也称为adjs或调整。

  • output_shape - INTS :

    输出的形状可以显式设置,这将导致自动生成填充值。如果指定了output_shape,则忽略填充值。有关生成填充值的公式的详细信息,请参阅文档。请注意,output_shape属性值不应包括批次大小和通道的维度,这些维度会自动推断。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • 步幅 - 整数 :

    沿每个空间轴的步幅。如果未指定,则沿每个空间轴的步幅默认为1。

输入

在2到3个输入之间。

  • X (异构) - T:

    来自前一层的输入数据张量;大小为 (N x C x H x W),其中 N 是批量大小,C 是通道数,H 和 W 是高度和宽度。请注意,这是针对 2D 图像的。否则大小为 (N x C x D1 x D2 … x Dn)

  • W (异构) - T:

    将在卷积中使用的权重张量;大小为 (C x M/group x kH x kW),其中 C 是通道数,kH 和 kW 是内核的高度和宽度,M 是特征图的数量。对于超过 2 维的情况,权重形状将为 (C x M/group x k1 x k2 x … x kn),其中 (k1 x k2 x … x kn) 是内核的维度。输出中的通道数应等于 W.shape[1] * group(假设形状数组的索引从零开始)。

  • B(可选,异构)- T

    可选的1D偏置,将被添加到卷积中,大小为M。

输出

  • Y (异构) - T:

    输出数据张量,包含卷积的结果。输出维度是核大小、步幅大小、填充长度和组数的函数。输出中的通道数应等于 W.shape[1] * group(假设形状数组的索引从零开始)。

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。

ConvTranspose - 1

版本

  • 名称: ConvTranspose (GitHub)

  • 域名: main

  • since_version: 1

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本1起可用。

总结

转置卷积运算符消耗一个输入张量和一个过滤器,并计算输出。

如果提供了 pads 参数,输出的形状将通过以下公式计算:

output_shape[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - pads[start_i] - pads[end_i]

output_shape 也可以显式指定,在这种情况下,pads 值将使用以下公式自动生成:

total_padding[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - output_shape[i] 如果 (auto_pads != SAME_UPPER): pads[start_i] = total_padding[i]/2; pads[end_i] = total_padding[i] - (total_padding[i]/2) 否则: pads[start_i] = total_padding[i] - (total_padding[i]/2); pads[end_i] = (total_padding[i]/2).

属性

  • auto_pad - STRING (默认为 'NOTSET'):

    auto_pad 必须是 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID 中的一个。默认值为 NOTSET,表示使用显式填充。SAME_UPPER 或 SAME_LOWER 表示填充输入以使输出空间大小与 input.In 匹配。在奇数情况下,SAME_UPPER 在末尾添加额外的填充,而 SAME_LOWER 在开头添加额外的填充。VALID 表示不填充。

  • dilations - INTS :

    沿着滤波器每个空间轴的膨胀值。

  • group - INT (默认是 '1'):

    输入通道和输出通道被分成的组数。

  • kernel_shape - INTS :

    卷积核的形状。如果未提供,应从输入W中推断。

  • output_padding - INTS :

    添加到输出一侧的零填充。在某些框架中,这也称为adjs/adjustment。

  • output_shape - INTS :

    输出的形状可以显式设置,这将导致自动生成填充值。如果指定了output_shape,则忽略填充值。有关生成填充值的公式的详细信息,请参阅文档。

  • pads - INTS :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin表示在轴i的开始部分添加的像素数,xi_end表示在轴i的结束部分添加的像素数。此属性不能与auto_pad属性同时使用。如果未指定,则沿每个空间轴的开始和结束的填充默认为0。

  • 步幅 - 整数 :

    沿着每个空间轴步进。

输入

在2到3个输入之间。

  • X (异构) - T:

    来自前一层的输入数据张量;大小为 (N x C x H x W),其中 N 是批量大小,C 是通道数,H 和 W 是高度和宽度。请注意,这是针对 2D 图像的。否则大小为 (N x C x D1 x D2 … x Dn)

  • W (异构) - T:

    将在卷积中使用的权重张量;大小为 (C x M/group x kH x kW),其中 C 是通道数,kH 和 kW 是内核的高度和宽度,M 是特征图的数量。对于超过 2 维的情况,权重形状将为 (C x M/group x k1 x k2 x … x kn),其中 (k1 x k2 x … x kn) 是内核的维度。输出中的通道数应等于 W.shape[1] * group(假设形状数组的索引从零开始)

  • B(可选,异构)- T

    可选的1D偏置,将被添加到卷积中,大小为M。

输出

  • Y (异构) - T:

    输出数据张量,包含卷积的结果。输出维度是核大小、步幅大小、填充长度和组数的函数。输出中的通道数应等于 W.shape[1] * group(假设形状数组的索引从零开始)。

类型约束

  • T 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将输入和输出类型限制为浮点张量。