Col2Im

Col2Im - 18

版本

  • 名称: Col2Im (GitHub)

  • : main

  • 起始版本: 18

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的操作符自版本 18 起可用

摘要

该运算符将列块重新排列回多维图像

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

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

属性

  • dilations - 整数 :

    一个一维张量,包含图像每个空间轴上的扩张值。如果不存在,则扩张值默认为图像每个空间轴上的 1。

  • pads - 整数 :

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

  • strides - 整数 :

    一个一维张量,包含沿每个空间轴的步幅值。如果不存在,则步幅默认为沿每个空间轴的 1。

输入

  • 输入 (异构) - T

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

  • image_shape (异构) - tensor(int64)

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

  • block_shape (异构) - tensor(int64)

    应用于输入的块的形状。这是一个至少为 2 的一维张量,包含 2-D 图像的 [H_block, W_block] 值或 N-D 块的 [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) )

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