diff --git a/docs/faq.md b/docs/faq.md index d21236df3..c9b6344c0 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -117,7 +117,15 @@ opConverter ==> MNN Converter NOT_SUPPORTED_OP: [ ANY_OP_NAME ] 临时解决方案:升级 numpy 版本到 1.20.0 或以上 ## 运行问题 -### 运行结果出错 / Tensor 的 elementSize 不为各维度乘积 +### 运行结果出错 +- 先使用 testMNNFromOnnx.py 等测试工具进行测试,具体参见模型转换工具的正确性校验部分 +- 测试工具验证正确,但运行代码结果出错,可能是如下原因: + 1. 使用 Session API 运行不满足运行条件的模型,此时应换用 Module API + 2. 输入的内存布局不对 + 3. 输入数据格式不对,int64 需要换成 int32_t ,double 需要换成 float + + +### 布局转换问题(Tensor 的 elementSize 不为各维度乘积) MNN 内部对 CV 相关算子采用 NC4HW4 布局,计算 elementSize 时,channel 会上对齐到 4 返回,此内存布局允许实现的硬件自行确定内存排列方式,具体方式不对用户可见,但用户可以通过如下代码,输入或获取自己指定的NCHW / NHWC 内存布局的 Tensor / VARP。 #### Interpreter-Session API @@ -237,6 +245,9 @@ OpenCL / Vulkan 采用静态变量自注册的方式往 MNN 主库注册后端. - 目前支持OpenCL和CUDA后端进行设置 - 具体可以参考:tools/cpp/testModel.cpp +### Register 相关内存泄露说明 +用 valgrind 工具检查时会报 MNN Register 相关的内存泄露,这个属于一次性的初始化内存,后续也不会增加,可视为误报 + ## 性能相关 ### 使用 GPU 时,调用 copyToHostTensor / copyFromHostTensor 非常慢 diff --git a/docs/tools/convert.md b/docs/tools/convert.md index f8ab79101..fdc707bc1 100644 --- a/docs/tools/convert.md +++ b/docs/tools/convert.md @@ -145,7 +145,13 @@ model_script.save('model_script.pt') - testMNNFromOnnx.py :适用 onnx - testMNNFromTorch.py :适用 pt (torchscript) -注意:对于由Torchscript转换的模型,需要自行修改`testMNNFromTorch.py`中的的输入信息来测试 +注意: + +- 如果模型是动态输入形状,MNN 在脚本中默认不固定部分为1,有可能在 Tensorflow / OnnxRuntime / Torch 验证阶段报错。此时需要修改脚本中对应的输入部分,比如 testMNNFromOnnx.py 中的 run_onnx(self) 函数,把输入替换为有效的输入形状和内容。 +- 对于由Torchscript转换的模型,一般都需要自行修改`testMNNFromTorch.py`中的的输入信息来测试。 +- 如果模型输出层是 Identity 产生的,会因为 MNN 图优化的缘故丢失,此时需要校验上一层的输出,即在脚本后接输出名来测试,如: python3 ../tools/scripts/testMNNFromTf.py XXX.pb $NAME$ + + ### 前置 - 测试 pb / tflite :安装`tensorflow`(`pip install tensorflow`) - 测试 onnx : 安装`onnxruntime`(`pip install onnxruntime`)