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])
  1. 加载 编译好的 TensorFlow Lite 模型 (*.tflite)。
  2. 创建 带有可选配置 (InterpreterOptions) 的解释器。
  3. 分配 所有张量的内存。
  4. 写入 输入值,通过张量的类型切片辅助函数 (Float32s())。
  5. 调用 模型。
  6. 读取 输出值。

所有资源必须通过 Delete() 调用手动释放,以避免内存泄漏。

入门指南

  1. 安装 C 库 – 从发布页面下载适当的 tflite-buildkit-<tag>-<target>.tar.gz 并将其解压到 /usr/local (Linux/macOS) 或自定义文件夹 (Windows),然后在 Linux 上运行 ldconfig。
  2. 设置 CGO 标志 – 如果您将头文件/库放在非标准位置,请设置 (CGO_CFLAGS, CGO_LDFLAGS, LD_LIBRARY_PATH)。
  3. 编写 Go 代码 – 使用上述 API;存储库包含一个 _example 目录,其中有更完整的示例。
  4. 运行 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。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目