mattn/go-tflite
Go binding for TensorFlow Lite
概览
go-tflite 是 TensorFlow Lite C API 的 Go 语言绑定。它允许 Go 程序加载 .tflite 模型、分配张量、输入数据、执行推理并读取结果,且无需编译完整的 TensorFlow 库。该项目为主要操作系统和 CPU 组合提供预编译的 TensorFlow Lite “buildkits”,如果您需要不同的 TensorFlow 版本,也提供了自行构建 C 库的说明。
主要功能
| 功能 | 对您的意义 |
|---|---|
| Go 原生 API | 简单的 Go 函数如 NewModelFromFile、NewInterpreter、AllocateTensors、GetInputTensor、Invoke 和 GetOutputTensor 封装了底层的 C 调用。 |
| 预编译二进制文件 | 发布包包含 libtensorflowlite_c.so (或 Windows 上的 .dll) 和 XNNPACK 委托库,因此您只需几个命令即可安装。 |
| Edge-TPU 支持 | 提供了链接 Google Coral Edge-TPU 委托的说明,从而在支持的设备上实现硬件加速推理。 |
| Docker / Binder 演示 | Binder 上托管了一个可直接运行的 Jupyter notebook (iris.ipynb),展示了如何直接在浏览器中使用 go-tflite 训练一个小型 Iris 分类器。 |
| 跨平台 | 提供适用于 Linux (amd64/arm64)、macOS (amd64/arm64) 和 Windows (amd64-mingw) 的 buildkits。 |
| MIT 许可 | 可免费使用、修改并嵌入到商业项目中。 |
典型工作流程 (来自 README 示例)
model := tflite.NewModelFromFile("sin_model.tflite")
interpreter := tflite.NewInterpreter(model, tflite.NewInterpreterOptions())
interpreter.AllocateTensors()
// Fill the first input tensor
v := float64(1.2) * math.Pi / 180.0
interpreter.GetInputTensor(0).Float32s()[0] = float32(v)
// Run inference
interpreter.Invoke()
// Read the first output tensor
result := float64(interpreter.GetOutputTensor(0).Float32s()[0])
- 加载 编译好的 TensorFlow Lite 模型 (
*.tflite)。 - 创建 带有可选配置 (
InterpreterOptions) 的解释器。 - 分配 所有张量的内存。
- 写入 输入值,通过张量的类型切片辅助函数 (
Float32s())。 - 调用 模型。
- 读取 输出值。
所有资源必须通过 Delete() 调用手动释放,以避免内存泄漏。
入门指南
- 安装 C 库 – 从发布页面下载适当的
tflite-buildkit-<tag>-<target>.tar.gz并将其解压到/usr/local(Linux/macOS) 或自定义文件夹 (Windows),然后在 Linux 上运行ldconfig。 - 设置 CGO 标志 – 如果您将头文件/库放在非标准位置,请设置 (
CGO_CFLAGS,CGO_LDFLAGS,LD_LIBRARY_PATH)。 - 编写 Go 代码 – 使用上述 API;存储库包含一个
_example目录,其中有更完整的示例。 - 运行
go build(如果您使用内置 XNNPACK 构建了 TensorFlow Lite,请添加-tags xnnpack_builtin)。
何时使用 go-tflite
- 您正在构建需要设备端推理的 Go 服务或 CLI (例如边缘设备、IoT 或低延迟服务器)。
- 您不希望嵌入庞大的 TensorFlow 运行时;TensorFlow Lite 的 C API 轻量且快速。
- 您希望从 Go 中利用 XNNPACK 或 Google Edge TPU 等硬件委托。
限制
- 该绑定比较轻量;您仍然需要手动管理张量内存,并了解模型预期的形状/类型。
- 不支持训练 – go-tflite 仅用于推理,TensorFlow Lite 也是如此。
- 您必须提供兼容的
libtensorflowlite_c库;版本不匹配可能会导致运行时错误。
资源
- Binder 笔记本 – 交互式 Iris 分类器演示。
- Docker 镜像 –
ghcr.io/mattn/go-tflite/gophernotes用于笔记本使用。 - Edge-TPU 指南 – 指向 Google Coral 存储库和安装步骤的链接。
- 源代码示例 – 请参阅存储库中的
_example文件夹。
以上所有信息均直接取自存储库的 README。
相关
- 项目
- 项目
- 项目
- 项目
- 项目