MNN模型輸出與ONNX模型輸出對不上
如題,本次bug原因是MNN的輸出格式是NC4HW4,需要將其轉為NCHW即可。
附上MNN文件原始碼如下:
import MNN.expr as F
vars = F.load_as_dict("model.mnn")
inputVar = vars["input"]
# 檢視輸入資訊
print(inputVar.shape)
print(inputVar.data_format)
# 修改原始模型的 NC4HW4 輸入為 NCHW,便於輸入
if (inputVar.data_format == F.NC4HW4):
inputVar.reorder(F.NCHW)
# 寫入資料
inputVar.write(numpy.ones([1, 3, 224, 224], dtype="float32").tolist())
# 檢視中間結果的值
midVar = vars['mid']
print(midVar.shape)
# 切換佈局便於檢視結果
if (midVar.data_format == F.NC4HW4):
midVar = F.convert(midVar, F.NCHW)
print(midVar.read())
# 檢視輸出結果
outputVar = vars['output']
print(outputVar.shape)
# 切換佈局便於檢視結果
if (outputVar.data_format == F.NC4HW4):
outputVar = F.convert(outputVar, F.NCHW)
print(outputVar.read())
# 將關注的變數數值儲存為 mnn 模型,可用 MNNDump2Json 列印檢視
midVar.fix_as_const()
outputVar.fix_as_const()
F.save([midVar, outputVar], "outputs.mnn")
轉換程式碼如下:
if (outputVar.data_format == F.NC4HW4):
outputVar = F.convert(outputVar, F.NCHW)
進行MNN推理時最好先檢視MNN模型輸入輸出的格式是否正確!
相關文章
- ONNX模型分析與使用模型
- 如何在langchain中對大模型的輸出進行格式化LangChain大模型
- pytorch模型(.pt)轉onnx模型(.onnx)的方法PyTorch模型
- C輸入輸出與檔案
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- 輸入輸出
- 取出預訓練模型中間層的輸出(pytorch)模型PyTorch
- Python 輸出不換行Python
- java_檔案輸入與輸出Java
- 資料儲存與輸出輸入
- 輸入輸出流
- 第10章 對檔案的輸入輸出
- 輸出
- onnx模型視覺化以及pytorch運算元與onnx節點對應關係模型視覺化PyTorch
- python:檔案的輸入與輸出Python
- Python資料的輸入與輸出Python
- 【推理引擎】ONNX 模型解析模型
- 深度學習之tensorflow2實戰:多輸出模型深度學習模型
- Mybatis 輸出對映-- resultType resultMapMyBatis
- 輸入一個ASCII碼,輸出對應的字元ASCII字元
- 【C++】輸入輸出C++
- Java 輸入輸出流Java
- 輸入輸出系統
- JAVA輸入輸出流Java
- 5,輸入與輸出(perl語言筆記)筆記
- pydantic+openai+json: 控制大模型輸出的最佳正規化OpenAIJSON大模型
- ncurses輸出函式:字元+字串的輸出函式字元字串
- Keras速查_CPU和GPU的mnist預測訓練_模型匯出_模型匯入再預測_匯出onnx並預測KerasGPU模型
- mybatis入門基礎(四)----輸入對映和輸出對映MyBatis
- PHPexit()輸出PHP
- python怎麼不轉行輸出Python
- 使用pycharm print不輸出怎麼辦PyCharm
- 有關fastjson輸出的時候double不輸出後面.0的問題ASTJSON
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- converter設計模式擴充套件,多種輸入輸出與標準輸入輸出的轉化方案設計模式套件
- 物聯網學習教程——格式輸入與輸出
- 瞭解下C# 檔案的輸入與輸出C#
- 關於Linux bash shell 輸入、輸出和錯誤輸出Linux