簡體   English   中英

tensorflow 2.2.0 中的量化感知訓練產生更長的推理時間

[英]Quantization aware training in tensorflow 2.2.0 producing higher inference time

我正在使用 Mobil.netV2 對個人數據集進行遷移學習量化。 我嘗試了兩種方法:

i.) 僅訓練后量化:它工作正常並且產生 0.04 秒的平均時間來推斷 60 張 224,224 維的圖像。

ii.) 量化感知訓練 + 訓練后量化:它比僅訓練后量化產生更高的准確性,但對於相同的 60 張圖像產生 0.55 秒的更高推理時間。

1.) 只有訓練后量化模型(.tflite)可以通過以下方式推斷:

        images_ = cv2.resize(cv2.cvtColor(cv2.imread(imagepath), cv2.COLOR_BGR2RGB), (224, 224))
        images = preprocess_input(images_)
        interpreter.set_tensor(
                    interpreter.get_input_details()[0]['index'], [x])
        interpreter.invoke()
        classes = interpreter.get_tensor(
            interpreter.get_output_details()[0]['index'])

2.) 量化感知訓練+訓練后量化可以通過以下代碼推斷。 不同的是這里它要求輸入 float32。

        images_ = cv2.resize(cv2.cvtColor(cv2.imread(imagepath), cv2.COLOR_BGR2RGB), (224, 224))
        images = preprocess_input(images_)
        x = np.expand_dims(images, axis=0).astype(np.float32)
        interpreter.set_tensor(
                    interpreter.get_input_details()[0]['index'], x)
        interpreter.invoke()
        classes = interpreter.get_tensor(
            interpreter.get_output_details()[0]['index'])

我進行了很多搜索,但沒有得到對此查詢的任何回復。 如果可能的話,請幫助解釋為什么與僅訓練后量化相比,在量化感知訓練 + 訓練后量化的情況下我的推理時間高?

我不認為你應該一起做量化意識訓練+訓練后量化。

根據https://www.tensorflow.org/model_optimization/guide/quantization/training_example ,如果您使用量化感知訓練,轉換將為您提供一個具有 int8 權重的模型。 因此,這里沒有必要進行訓練后量化。

我認為從uint8轉換為float32 ( .astype(np.float32) ) 的部分使它變慢了。 否則,它們應該以相同的速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM