W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
tf.quantize_v2 函數(shù)
quantize_v2(
input,
min_range,
max_range,
T,
mode='MIN_COMBINED',
name=None
)
參見指南:張量變換>分割和連接
將浮點類型的 “input” 張量量化為“T”類型的 “output” 張量.
[min_range,max_range]是標量浮點數(shù),它用于指定 “input” 數(shù)據(jù)的范圍.“mode” 屬性確定地控制著被用來將浮點值轉(zhuǎn)換為它們的量化等效項的計算.
在 “MIN_COMBINED” 模式中,張量的每個值將經(jīng)歷以下內(nèi)容:
如果 T == qint8, out[i] -= (range(T) + 1) / 2.0,
那么 out[i] = (in[i] - min_range) * range(T) / (max_range - min_range)
其中:range(T) = numeric_limits<T>::max() - numeric_limits<T>::min()
假設輸入是 float 類型的,并且可能的范圍是 [0.0,6.0],輸出類型是 quint8([0,255]).min_range 和 max_range 的值應該被指定為 0.0 和 6.0.從 float 到quint8 的量化將把輸入的每個值乘以 255/6 并轉(zhuǎn)換為 quint8.
如果輸出類型為 qint8 ([-128、127]),則操作將在強制轉(zhuǎn)換之前將每個值減去 128,以便值的范圍與 qint8 的范圍對齊.
如果模式是 'MIN_FIRST',則使用這種方法:
number_of_steps = 1 << (# of bits in T)
range_adjust = number_of_steps / (number_of_steps - 1)
range = (range_max - range_min) * range_adjust
range_scale = number_of_steps / range
quantized = round(input * range_scale) - round(range_min * range_scale) +
numeric_limits<T>::min()
quantized = max(quantized, numeric_limits<T>::min())
quantized = min(quantized, numeric_limits<T>::max())
這和 MIN_COMBINED 最大的區(qū)別是最小范圍首先四舍五入,然后從舍入值中減去.在 MIN_COMBINED 中,引入了一個小的偏差,即量化和 dequantizing 的重復迭代會引入一個較大的錯誤.
SCALED 模式與 QuantizeAndDequantize{V2| V3} 中使用的量化方法相匹配.
如果模式是 SCALED,我們不使用輸出類型的全部范圍,選擇取消對稱的最小可能值(例如,輸出范圍是 -127 到 127,而不是有符號的 8 位量化的 -128 到 127),所以.即 0.0 映射到 0.
我們首先在張量中找到值的范圍.我們使用的范圍總是以 0 為中心,所以我們找到 m:
m = max(abs(input_min), abs(input_max))
那么我們的輸入張量范圍是 [-m, m].
接下來,我們選擇我們的定點量化 buckets [min_fixed, max_fixed].如果 T 被簽名,這是:
num_bits = sizeof(T) * 8
[min_fixed, max_fixed] =
[-(1 << (num_bits - 1) - 1), (1 << (num_bits - 1)) - 1]
否則,如果 T 是無符號的,則定點范圍是:
[min_fixed, max_fixed] = [0, (1 << num_bits) - 1]
由此我們計算出我們的比例因子 s:
s = (max_fixed - min_fixed) / (2 * m)
現(xiàn)在我們可以量化張量的元素:
result = (input * s).round_to_nearest()
需要注意的是,在量化過程中,操作員可能會選擇稍微調(diào)整所需的最小值和最大值,所以您應該始終使用輸出端口作為進一步計算的范圍.例如,如果所請求的最小值和最大值接近相等,則它們將被分離一個小的 ε 值,以防止形成不規(guī)則的量化緩沖區(qū).否則,最終可能會出現(xiàn)緩沖區(qū),其中所有量化值映射到相同的浮點值,這會導致需要對其執(zhí)行進一步計算的操作出現(xiàn)問題.
參數(shù):
返回:
Tensor 對象的元組(output,output_min,output_max).
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: