Golang是否支持TensorFlow?

Golang是否支持TensorFlow? 在某些地方,Go语言声称支持TensorFlow,但在其他地方TensorFlow却不支持Go语言。目前我找不到任何明确的信息,Go语言的TensorFlow是否被支持?您能提供任何建议或信息吗?

4 回复

我能否使用TensorFlow创建人工智能结构并用Go语言运行它?

更多关于Golang是否支持TensorFlow?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


当某个直接库不存在或已停止维护时,就像使用LLVM一样,你必须转向C绑定库。我总是寻找一个维护良好的C绑定,因为对于许多库和框架来说,官方的多语言解决方案在一段时间后就会落后于官方版本(在本例中是Python)。在99%的情况下,C接口在每个版本中都会持续发布,这降低了风险(当然前提是绑定的维护者是活跃的)。

我的理解是 Go 语言绑定 目前没有被积极维护:

警告:

TensorFlow 团队目前没有维护 TensorFlow Go 语言绑定的安装文档。

相关说明由第三方贡献者 @wamuir 维护。

请按照 @wamuir 提供的此来源来安装 Golang 与 TensorFlow。

似乎有一个社区项目,但不确定其维护情况如何。它最近有提交记录:

GitHub

GitHub - galeone/tfgo: Tensorflow + Go, the gopher way

Tensorflow + Go,地道的 Go 语言方式。通过在 GitHub 上创建账户来为 galeone/tfgo 的开发做出贡献。

如果你不直接使用 Python,这可能是你需要逆流而上的领域之一。我对 Tensorflow 没有太多经验,也没有尝试过使用这些项目,所以也许这里的其他人可以给出更明确的说法。

是的,Go语言官方支持TensorFlow。TensorFlow为Go提供了绑定库,允许你在Go程序中加载预训练的模型并进行推理预测。不过需要注意的是,Go的TensorFlow API主要专注于模型部署和推理,而不是用于模型训练。

下面是一个简单的示例,展示如何在Go中加载一个SavedModel并进行预测:

package main

import (
	"fmt"
	"log"
	tf "github.com/tensorflow/tensorflow/tensorflow/go"
	"github.com/tensorflow/tensorflow/tensorflow/go/op"
)

func main() {
	// 加载模型
	model, err := tf.LoadSavedModel("path/to/your/model", []string{"serve"}, nil)
	if err != nil {
		log.Fatal(err)
	}
	defer model.Session.Close()

	// 创建输入张量
	inputTensor, err := tf.NewTensor([][]float32{{1.0, 2.0, 3.0}})
	if err != nil {
		log.Fatal(err)
	}

	// 运行推理
	output, err := model.Session.Run(
		map[tf.Output]*tf.Tensor{
			model.Graph.Operation("input_tensor").Output(0): inputTensor,
		},
		[]tf.Output{
			model.Graph.Operation("output_tensor").Output(0),
		},
		nil,
	)
	if err != nil {
		log.Fatal(err)
	}

	// 处理输出
	predictions := output[0].Value().([][]float32)
	fmt.Printf("Predictions: %v\n", predictions)
}

要使用TensorFlow Go绑定,你需要先安装:

go get github.com/tensorflow/tensorflow/tensorflow/go

需要注意的是,Go的TensorFlow API功能相对有限,主要用于:

  1. 加载SavedModel格式的预训练模型
  2. 执行模型推理
  3. 基础张量操作

对于完整的机器学习工作流程(包括模型训练),建议使用Python版本的TensorFlow,然后导出模型供Go程序使用。

回到顶部