Col2Im

Col2Im - 18

版本

  • 名称: Col2Im (GitHub)

  • 域名: main

  • since_version: 18

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

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

摘要

该操作符将列块重新排列回多维图像

Col2Im 的行为类似于 PyTorch 的 fold https://pytorch.org/docs/stable/generated/torch.nn.Fold.html, 但它只支持批处理的多维图像张量。 另一个支持 N 维的 Python 实现可以在 https://github.com/f-dangel/unfoldNd/ 找到。

注意: 尽管指定image_shape看起来是多余的,因为它可以从卷积公式中计算出来,但在更高级的场景中,它需要作为输入,如PyTorch的实现中所解释的(https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/native/Col2Im.cpp#L10

属性

  • dilations - INTS :

    一维张量,表示图像每个空间轴上的扩张值。如果未提供,则默认图像每个空间轴上的扩张值为1。

  • pads - INTS :

    一维张量,包含沿每个空间轴的开始和结束的填充值,它可以取任何大于或等于0的值。该值表示在相应轴的开始和结束部分添加的像素数。pads 格式应如下 [x1_begin, x2_begin…x1_end, x2_end,…],其中 xi_begin 是在轴 i 的开始处添加的像素数,xi_end 是在轴 i 的结束处添加的像素数。如果未提供,则默认沿每个空间轴的开始和结束填充为0。

  • 步幅 - 整数 :

    一维张量,沿每个空间轴的步幅值。如果未提供,则步幅默认为沿每个空间轴为1。

输入

  • 输入 (异构) - T:

    输入数据张量,用于将列块重新排列回图像。这是一个三维张量,包含 [N, C * n-ary-product(block_shape), L],其中 N 是批次维度,C 是图像通道维度,L 是块的数量。块按其索引的递增字典顺序枚举。例如,对于图像大小为 1020 且块大小为 918 的情况,将有 2*3 个块,按块(0, 0)、块(0, 1)、块(0, 2)、块(1, 0)、块(1, 1)、块(1, 2) 的顺序枚举。

  • image_shape (异构) - tensor(int64):

    重新排列列块后图像的空间维度形状。这是一个大小至少为2的一维张量,包含二维图像的[H_img, W_img]值或N维图像的[dim_i1, dim_i2, …, dim_iN]值。

  • block_shape (异构) - tensor(int64):

    应用于输入的块的形状。这是一个至少包含2个元素的一维张量,对于二维图像包含值[H_block, W_block],对于N维块包含值[dim_b1, dim_b2, …, dim_bN]。这是在应用膨胀之前的块形状。

输出

  • 输出 (异构) - T:

    通过将块重新排列成图像生成的输出张量。

类型约束

  • T 在 ( tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入和输出类型限制为所有数值张量类型。