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 - INTS :
一个一维张量,包含图像沿每个空间轴的膨胀值。如果未指定,膨胀值默认为图像沿每个空间轴的 1。
pads - INTS :
一个一维张量,包含沿每个空间轴的开始和结束部分的填充值,可以取任何大于或等于 0 的值。该值表示在对应轴的开始和结束部分添加的像素数量。pads 格式应如下所示 [x1_begin, x2_begin…x1_end, x2_end,…],其中 xi_begin 是在轴
i
的开始处添加的像素数量,xi_end 是在轴i
的结束处添加的像素数量。如果未指定,填充值默认为沿每个空间轴的开始和结束部分的 0。strides - INTS :
一个一维张量,包含沿每个空间轴的步幅值。如果未指定,步幅值默认为沿每个空间轴的 1。
输入¶
input (异构) - T
要从列块重新排列回图像的输入数据张量。这是一个三维张量,包含 [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 的一维张量,对于 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]。这是应用膨胀之前的块形状。
输出¶
output (异构) - T
通过将块重新排列成图像而产生的输出张量。
类型约束¶
T in (
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)
)将输入和输出类型限制为所有数值张量类型。