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