TensorFlow Lite开发系列之C++接口解析(二)

简介: TensorFlow Lite开发系列之C++接口解析

编译


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解析:


微信图片_20230203193157.png


这是推理过程当中,常用的两个类,常用方法如下(更多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)  // 将指针返回给定输出张量的数据
目录
相关文章
|
3天前
|
人工智能 文字识别 自然语言处理
准确高效的TextIn文档解析:一项开发痛点的解决方案
企业在构建知识库问答系统时面临挑战,尤其是处理扫描文档和手写内容。传统OCR工具和开源方法在准确性和速度上不足。专业长文档解析成为关键,其中TextIn平台的文档解析服务脱颖而出。该服务能快速将PDF转为Markdown,提高处理速度和准确性,尤其适合处理复杂布局的长文档。通过实际测试,TextIn能有效增强LLM问答系统的性能,解决无法正确解析的问题。目前TextIn处于内测阶段,提供每周7000页的免费试用额度,开发者可通过其官网或“合研社”公众号了解更多信息和获取接口文档。
|
3天前
|
缓存 负载均衡 网络协议
使用Go语言开发高性能服务的深度解析
【5月更文挑战第21天】本文深入探讨了使用Go语言开发高性能服务的技巧,强调了Go的并发性能、内存管理和网络编程优势。关键点包括:1) 利用goroutine和channel进行并发处理,通过goroutine池优化资源;2) 注意内存管理,减少不必要的分配和释放,使用pprof分析;3) 使用非阻塞I/O和连接池提升网络性能,结合HTTP/2和负载均衡技术;4) 通过性能分析、代码优化、缓存和压缩等手段进一步提升服务性能。掌握这些技术能帮助开发者构建更高效稳定的服务。
|
7天前
|
JSON Android开发 数据格式
Android框架-Google官方Gson解析,android开发实验报告总结
Android框架-Google官方Gson解析,android开发实验报告总结
|
7天前
|
Android开发
Android高级开发面试题以及笞案整理,实战解析
Android高级开发面试题以及笞案整理,实战解析
|
7天前
|
Android开发
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Android-kotlin-接口与多态的表现,面经解析
Android-kotlin-接口与多态的表现,面经解析
|
9天前
|
人工智能 IDE Devops
通义灵码技术解析,打造 AI 原生开发新范式
本文第一部分先介绍 AIGC 对软件研发的根本性影响,从宏观上介绍当下的趋势;第二部分将介绍 Copilot 模式,第三部分是未来软件研发 Agent 产品的进展。
63624 5
|
9天前
|
Linux 开发工具 Android开发
移动应用与系统:开发与操作系统的深度解析
【5月更文挑战第6天】 在数字化时代,移动应用和操作系统是信息技术的核心组成部分。本文深入探讨了移动应用的开发过程、关键技术以及移动操作系统的架构和功能。通过对这些技术的详细分析,我们可以更好地理解移动应用和系统的工作原理,以及它们如何影响我们的生活和工作。
|
7天前
|
Linux 网络安全 Windows
网络安全笔记-day8,DHCP部署_dhcp搭建部署,源码解析
网络安全笔记-day8,DHCP部署_dhcp搭建部署,源码解析
|
8天前
HuggingFace Tranformers 源码解析(4)
HuggingFace Tranformers 源码解析
34 0

推荐镜像

更多