这俩天顺便用了阿里的MNN:
https://github.com/alibaba/MNN

还挺好用的,就是不知道带有opencl后端的引擎怎么用Python API调用


我遇到一个小坑,输出的数据是这样杂乱无章的:
在这里插入图片描述
而不是这样的:
在这里插入图片描述

反复debug,发现:

原来是模型的输出不能直接 getData() 
output_tensor = interpreter.getSessionOutput(session)       # 获得模型的输出
tmp_output = MNN.Tensor((1, 2, 224, 224),                   # 用来做输出的临时变量
                        MNN.Halide_Type_Float, 
                        np.ones([1, 2, 224, 224]).astype(np.float32), 
                        MNN.Tensor_DimensionType_Caffe)
output_tensor.copyToHostTensor(tmp_output)                  # 将模型的输出给 tmp_output 变量
x = tmp_output.getNumpyData()[0]                            # 获取 numpy 格式的数据

这段代码没啥问题,但要把最后一行:

x = tmp_output.getNumpyData()[0]                            # 获取 numpy 格式的数据

替换为:

x = output_tensor.getNumpyData()[0]                         # 获取 numpy 格式的数据

就会变成杂乱无章的数据,可能是数据先行后列之类的出问题了??

他俩都是 MNN.Tensor 的数据类型

所以我感觉,MNN模型输出的Tensor,要先转化为对应的格式MNN.Tensor_DimensionType_Caffe,才能打印出来

或者说这一步就是转化数据格式的:

tmp_output = MNN.Tensor((1, 2, 224, 224),                   # 用来做输出的临时变量
                        MNN.Halide_Type_Float, 
                        np.ones([1, 2, 224, 224]).astype(np.float32), 
                        MNN.Tensor_DimensionType_Caffe)
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐