编译
1.下载tensorflow源码
2.保证系统已经安装g++, gcc, make, cmake
3.加压刚才下载好的 tensorflow 源码, 进入tensorflow-master/tensorflow/lite/tools/make/目录下
4.首先执行download_dependencies.sh文件,这里会下载一些依赖,博主下载了好几次才成功(小小心累),可能需要翻墙,如果总是下载失败的话,可以关注留言或者关注私信,联系我要这个文件
5.接下来根据不同的设备,执行不同的build_xxxxx.sh文件,博主是在ubuntu上运行的,这里sh build_lib.sh, 执行完毕后,在同级目录下生成 gen 目录,代表成功
API解析:
这是推理过程当中,常用的两个类,常用方法如下(更多API介绍):
// 基于缓冲区构建模型 BuildFromBuffer(const char *caller_owned_buffer, size_t buffer_size, ErrorReporter *error_reporter)
// 基于文件构建模型 BuildFromFile(const char *filename, ErrorReporter *error_reporter)
// 验证缓冲区的内容是否合法,然后基于缓冲区构建模型 VerifyAndBuildFromBuffer(const char *buffer, size_t buffer_size, TfLiteVerifier *extra_verifier, ErrorReporter *error_reporter)
// 验证文件的内容是否合法,然后基于该文件构建模型 VerifyAndBuildFromFile(const char *filename, TfLiteVerifier *extra_verifier, ErrorReporter *error_reporter)
AllocateTensors() // 加载所有的tensor
Interpreter(ErrorReporter *error_reporter) // 实例化解释器
GetInputName(int index) const // 返回给定输入的名称
GetOutputName(int index) const // 返回给定输出的名称
Invoke() // 调用推理器
ResizeInputTensor(int tensor_index, const std::vector< int > & dims) // 更改给定张量的尺寸
SetAllowFp16PrecisionForFp32(bool allow) // 尽可能允许float16精度用于FP32计算
SetNumThreads(int num_threads) // 设置解释器可用的线程数
UseNNAPI(bool enable) // 启用或禁用NN API(启用时为true)
typed_input_tensor(int index) // 将变指针返回给定输入张量的数据
typed_output_tensor(int index) // 将指针返回给定输出张量的数据