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,但它只支持 批量 多维图像张量。另一个支持 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 - 整数 :

    一个一维张量,表示图像每个空间轴上的膨胀值。如果不存在,则膨胀值默认为图像每个空间轴上的 1。

  • pads - 整数 :

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

  • strides - 整数 :

    一个一维张量,表示每个空间轴上的步长值。如果不存在,则步长值默认为每个空间轴上的 1。

输入

  • 输入 (异构) - T

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

  • image_shape (异构) - tensor(int64)

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

  • block_shape (异构) - tensor(int64)

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

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