非影像相關模型,處理模型時的相關問題
我們是透過Tensorflow字詞轉換成 1x50的向量,訓練DNN神經網路並匯出tflite,現已成功使用官方API將tflite轉換成onnx並優化,面臨以下問題
1.量化階段
我們將(1,30)的input輸入至onnx模型卻顯示輸入錯誤,必須以(1,1,1,30) shape進行輸入,為何與原本模型輸入shape不同
2.NEF階段
我們已將(1,30)透過(1,1,1,30) shape進行輸入,並轉換nef成功,導入耐能加速棒,這時有點疑惑不知怎麼透過加速棒進行推論,我們發現現有的範例都是圖片為主找不到以字向量為主的範本,套用範例程式碼時因圖片的處理方式不同產生與我們當初訓練模型的結果大相逕庭,想請問這方面如何處理呢?
模型結構如上
The discussion has been closed due to inactivity. To continue with the topic, please feel free to post a new discussion.
Comments
裡面主要有
data資料夾(訓練時用的資料)
1031.tflite(一開始用tensorflow匯出的模型檔)
opt.onnx(利用opt.py轉換出來的模型檔)
models_720.nef(利用nef.py轉換出來的模型檔)
將nef檔載入加速棒後,執行推論的程式碼(想知道這部分如何處理,錯在哪裡)
另外我還想問,如果這樣處理沒有問題的話回傳的特徵圖如何處理
@林秉宏
Hi 秉宏,
1. 關於您提出的第一點問題,您可以參考一下以下提供的 document 與 Comment。
https://doc.kneron.com/docs/#toolchain/manual/#3-onnx-workflow (3.3 E2E Simulator Check (Floating Point))
https://www.kneron.com/forum/discussion/comment/1055/#Comment_1055
https://www.kneron.com/forum/discussion/comment/865/#Comment_865
2.理論上非圖片的資料使用的 Inference API 都需要使用 data inference (kp_generic_data_inference_send()/kp_generic_data_inference_receive()) 這種流程 (https://doc.kneron.com/docs/#plus_c/api_migration/api_migration_mapping_table/)
另外您的輸入資料需要另外自己處理,分為三個部分
(1)normalization
(2) quantization
(3) convert to NPU format
這 3 個部份您可以參考以下連結,裡面分別有 KL520 與 KL720 不同的處理方式:
https://doc.kneron.com/docs/#plus_python/tutorial/chapter/model_inference_with_data_inference/
看過您的 code,您還需要做連結內的 Do Preprocessing at Software (Host side) 這個步驟。
至於您輸出之後的 feature map 需要依據您在 "Tensorflow字詞轉換" 的這個應用自行做 postprocess,也就是說您能找看看當時您在 Tensorflow 上是如何處理這個 model 的 ouput,您的 output feature map 也就使用同處理方式。