Col2Im

Col2Im - 18

版本

  • 名稱: Col2Im (GitHub)

  • 網域: main

  • 自版本: 18

  • 函數: False

  • 支援層級: SupportType.COMMON

  • 形狀推斷: True

此版本的運算子自版本 18起可用。

摘要

運算子將欄塊重新排列回多維影像

Col2Im 的行為類似於 PyTorch 的 fold https://pytorch.dev.org.tw/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 維張量,沿著影像的每個空間軸具有膨脹值。 如果不存在,則沿著影像的每個空間軸的膨脹預設為 1。

  • pads - INTS :

    1 維張量,具有沿著每個空間軸的開始和結尾的填充值,它可以採用任何大於或等於 0 的值。該值表示新增到對應軸的開始和結束部分的像素數。 pads 格式應如下 [x1_begin, x2_begin...x1_end, x2_end,...],其中 xi_begin 是新增到軸 i 開頭的像素數,而 xi_end 是新增到軸 i 結尾的像素數。 如果不存在,則每個空間軸的開始和結尾的填充預設為 0。

  • strides - INTS :

    1 維張量,沿著每個空間軸具有步幅值。 如果不存在,則沿著每個空間軸的步幅預設為 1。

輸入

  • input (異質) - 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 的一維張量,包含 2D 影像的值 [H_img, W_img] 或 N-D 影像的值 [dim_i1, dim_i2, …, dim_iN]。

  • block_shape (異質) - tensor(int64)

    要套用至輸入的區塊形狀。這是一個大小至少為 2 的一維張量,包含 2D 影像的值 [H_block, W_block] 或 N-D 區塊的值 [dim_b1, dim_b2, …, dim_bN]。這是將膨脹套用至區塊之前的區塊形狀。

輸出

  • output (異質) - 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) ) 中

    將輸入和輸出型別限制為所有數值張量型別。