QLinearConv

QLinearConv - 10

版本

  • 名稱: QLinearConv (GitHub)

  • 網域: main

  • since_version: 10

  • 函式: False

  • 支援層級: SupportType.COMMON

  • 形狀推斷: True

此版本的運算子自版本 10 起提供。

摘要

卷積運算子會取用量化輸入張量、其比例和零點、量化濾波器、其比例和零點,以及輸出的比例和零點,並計算量化輸出。每個比例和零點對必須具有相同的形狀。這表示它們必須是純量(每個張量)或 1 維張量(每個輸出通道)。每個輸入或輸出及其相關的零點必須具有相同的類型。當存在偏差時,必須使用比例 = 輸入比例 * 權重比例,且零點為 0 進行量化。

屬性

  • auto_pad - STRING (預設為 'NOTSET')

    auto_pad 必須為 NOTSET、SAME_UPPER、SAME_LOWER 或 VALID。預設值為 NOTSET,表示使用明確的填補。SAME_UPPER 或 SAME_LOWER 表示填補輸入,使每個軸 ioutput_shape[i] = ceil(input_shape[i] / strides[i])。填補會平均或幾乎平均地在兩側之間分割(取決於它是偶數還是奇數)。如果填補是奇數,則額外的填補會加在 SAME_UPPER 的結尾,並加在 SAME_LOWER 的開頭。

  • dilations - INTS :

    濾波器每個空間軸的膨脹值。如果不存在,則膨脹值預設為每個空間軸 1。

  • group - INT (預設為 '1')

    輸入通道和輸出通道所分割成的群組數量。預設為 1。

  • kernel_shape - INTS :

    卷積核心的形狀。如果不存在,則應從輸入「w」推斷。

  • pads - INTS :

    沿著每個空間軸開頭和結尾的填補,它可以採用任何大於或等於 0 的值。該值代表新增至對應軸開頭和結尾部分的像素數。pads 格式應如下所示 [x1_begin, x2_begin...x1_end, x2_end,...],其中 xi_begin 為新增至軸 i 開頭的像素數,而 xi_end 為新增至軸 i 結尾的像素數。此屬性不能與 auto_pad 屬性同時使用。如果不存在,則填補預設為每個空間軸開頭和結尾的 0。

  • strides - INTS :

    沿著每個空間軸的步幅。如果不存在,則步幅預設為每個空間軸 1。

輸入

介於 8 和 9 個輸入之間。

  • x (異質) - T1

    來自前一層的輸入資料張量;大小為 (N x C x H x W),其中 N 為批次大小,C 為通道數,而 H 和 W 為高度和寬度。請注意,這是針對 2D 影像。否則大小為 (N x C x D1 x D2 … x Dn)。或者,如果維度符號有效,則運算預期輸入資料張量會以 [DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …] 的維度符號到達。

  • x_scale (異質) - tensor(float)

    輸入「x」的比例張量。它是純量,表示每個張量/層量化。

  • x_zero_point (異質) - T1

    輸入「x」的零點張量。它是純量,表示每個張量/層量化。

  • w (異質) - T2

    將在卷積中使用的權重張量;大小為 (M x C/群組 x kH x kW),其中 C 為通道數,kH 和 kW 為核心的高度和寬度,而 M 為特徵圖的數量。對於 2 個以上的維度,核心形狀將為 (M x C/群組 x k1 x k2 x … x kn),其中 (k1 x k2 x … kn) 為核心的維度。或者,如果維度符號有效,則運算預期權重張量會以 [FILTER_OUT_CHANNEL, FILTER_IN_CHANNEL, FILTER_SPATIAL, FILTER_SPATIAL …] 的維度符號到達。X.shape[1] == (W.shape[1] * 群組) == C (假設形狀陣列的索引從零開始)。或者換句話說,FILTER_IN_CHANNEL 應該等於 DATA_CHANNEL。

  • w_scale (異質) - tensor(float)

    輸入 'w' 的縮放張量。它可以是純量或一維張量,這表示每個張量/層或每個輸出通道的量化。如果它是一維張量,則其元素數量應等於輸出通道的數量 (M)。

  • w_zero_point (異質) - T2

    輸入 'w' 的零點張量。它可以是純量或一維張量,這表示每個張量/層或每個輸出通道的量化。如果它是一維張量,則其元素數量應等於輸出通道的數量 (M)。

  • y_scale (異質) - tensor(float)

    輸出 'y' 的縮放張量。它是一個純量,表示每個張量/層的量化。

  • y_zero_point (異質) - T3

    輸出 'y' 的零點張量。它是一個純量,表示每個張量/層的量化。

  • B (可選,異質) - T4

    可選的 1D 偏差,將添加到卷積中,大小為 M。偏差必須使用 scale = x_scale * w_scale 和 zero_point = 0 進行量化。

輸出

  • y (異質) - T3

    包含卷積結果的輸出資料張量。輸出維度是核心大小、步幅大小和填充長度的函數。

類型限制

  • T1 in ( tensor(int8), tensor(uint8) )

    將輸入類型限制為 8 位元整數張量。

  • T2 in ( tensor(int8), tensor(uint8) )

    將篩選器類型限制為 8 位元整數張量。

  • T3 in ( tensor(int8), tensor(uint8) )

    將輸出類型限制為 8 位元整數張量。

  • T4 in ( tensor(int32) )

    將偏差類型限制為 32 位元整數張量。