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)
)将输入和输出类型限制为所有数字张量类型。