MNN源码阅读--Tensor数据结构解析和运行示例

tensor就是容纳推理框架中间数据的一个数据结构,常用的有关函数如下:

这其中第一个参数是tensor的维度信息,第二个参数是是否指定数据指针,第三个参数是数据在内存中的排布信息,如果是CAFFE证明是NCHW类型,如果是TENSORFLOW证明是NHWC类型,默认的类型是TENSORFLOW类型,这里经常会有一些坑,比如最终想要得到一个1 3 1024*1024的数据时候,如果没有指定是CAFFE类型的数据排布,而是使用默认的情况(TENSORFLOW),读出来的数据channel维度就在最后。

得到各种维度和长度:

得到shape向量和数据总数:

得到数据指针:

Interpreter就是一个MNN的从模型得到的一个网络,有关Interpreter的tenosr操作,肯定就是涉及到输入的tesnor和输出的tensor的设置,由于可能在不同的设备上运行,因此可能有内存拷贝的操作。

获取Interpreter的输入tensor:

获取Interpreter的输出tensor:

将host的tensor数据拷贝给Interpreter的tensor

将Interpreter的tensor数据拷贝给host tensor