QLinearMatMul¶
QLinearMatMul - 21¶
版本¶
網域:
main
since_version:
21
function:
False
support_level:
SupportType.COMMON
形狀推斷:
True
此版本的運算符自版本 21 起可用。
摘要¶
行為類似 numpy.matmul 的矩陣乘積。它會使用兩個量化輸入張量、它們的縮放和零點、輸出的縮放和零點,並計算量化輸出。量化公式為 y = saturate((x / y_scale) + y_zero_point)。對於 (x / y_scale),會四捨五入到最近的偶數。如需詳細資訊,請參閱 https://en.wikipedia.org/wiki/Rounding。縮放和零點必須具有相同的形狀。它們必須是純量 (每個張量) 或 N 維張量 (「a」的每一列和「b」的每一行)。純量是指每個張量量化,而 N 維是指每列或每行量化。如果輸入是形狀為 [M, K] 的 2D,則零點和縮放張量可以是 M 個元素的向量 [v_1, v_2, …, v_M],用於每列量化,而 K 個元素的向量 [v_1, v_2, …, v_K],用於每行量化。如果輸入是形狀為 [D1, D2, M, K] 的 N 維張量,則零點和縮放張量可以具有形狀 [D1, D2, M, 1],用於每列量化,以及形狀 [D1, D2, 1, K],用於每行量化。生產永遠不得溢位,且累計只有在 32 位元時才可能溢位。
輸入¶
a (異質) - T1
N 維量化矩陣 a
a_scale (異質) - TS
量化輸入 a 的縮放
a_zero_point (異質) - T1
量化輸入 a 的零點
b (異質) - T2
N 維量化矩陣 b
b_scale (異質) - TS
量化輸入 b 的縮放
b_zero_point (異質) - T2
量化輸入 b 的零點
y_scale (異質) - TS
量化輸出 y 的縮放
y_zero_point (異質) - T3
量化輸出 y 的零點
輸出¶
y (異質) - T3
來自 a * b 的量化矩陣乘法結果
類型限制¶
TS in (
tensor(bfloat16)
,tensor(float)
,tensor(float16)
)限制縮放。
T1 in (
tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int8)
,tensor(uint8)
)輸入 a 及其零點的類型。
T2 in (
tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int8)
,tensor(uint8)
)輸入 b 及其零點的類型。
T3 in (
tensor(float8e4m3fn)
,tensor(float8e4m3fnuz)
,tensor(float8e5m2)
,tensor(float8e5m2fnuz)
,tensor(int8)
,tensor(uint8)
)輸出及其零點的類型。
QLinearMatMul - 10¶
版本¶
網域:
main
since_version:
10
function:
False
support_level:
SupportType.COMMON
形狀推斷:
True
此版本的運算符自版本 10 起可用。
摘要¶
行為類似 numpy.matmul 的矩陣乘積。它會使用兩個量化輸入張量、它們的縮放和零點、輸出的縮放和零點,並計算量化輸出。量化公式為 y = saturate((x / y_scale) + y_zero_point)。對於 (x / y_scale),會四捨五入到最近的偶數。如需詳細資訊,請參閱 https://en.wikipedia.org/wiki/Rounding。縮放和零點必須具有相同的形狀。它們必須是純量 (每個張量) 或 N 維張量 (「a」的每一列和「b」的每一行)。純量是指每個張量量化,而 N 維是指每列或每行量化。如果輸入是形狀為 [M, K] 的 2D,則零點和縮放張量可以是 M 個元素的向量 [v_1, v_2, …, v_M],用於每列量化,而 K 個元素的向量 [v_1, v_2, …, v_K],用於每行量化。如果輸入是形狀為 [D1, D2, M, K] 的 N 維張量,則零點和縮放張量可以具有形狀 [D1, D2, M, 1],用於每列量化,以及形狀 [D1, D2, 1, K],用於每行量化。生產永遠不得溢位,且累計只有在 32 位元時才可能溢位。
輸入¶
a (異質) - T1
N 維量化矩陣 a
a_scale (異質) - tensor(float)
量化輸入 a 的縮放
a_zero_point (異質) - T1
量化輸入 a 的零點
b (異質) - T2
N 維量化矩陣 b
b_scale (異質) - tensor(float)
量化輸入 b 的縮放
b_zero_point (異質) - T2
量化輸入 b 的零點
y_scale (異質) - tensor(float)
量化輸出 y 的縮放
y_zero_point (異質) - T3
量化輸出 y 的零點
輸出¶
y (異質) - T3
來自 a * b 的量化矩陣乘法結果
類型限制¶
T1 in (
tensor(int8)
,tensor(uint8)
)將輸入 a 及其零點資料類型限制為 8 位元整數張量。
T2 in (
tensor(int8)
,tensor(uint8)
)將輸入 b 及其零點資料類型限制為 8 位元整數張量。
T3 in (
tensor(int8)
,tensor(uint8)
)將輸出 y 及其零點資料類型限制為 8 位元整數張量。