[译] 安装 Go 版本 Tensorflow

·  阅读 3030
[译] 安装 Go 版本 Tensorflow

本文出自 掘金翻译计划 正在组织翻译的 TensorFlow 官方文档。如果您有兴趣,欢迎 申请成为译者,学习完译者教程后,参与到文章和文档的翻译和及对当中。我们也正在招募 TensorFlow 译者,欢迎积极参加。


TensorFlow 提供了 Go 程序中可以调用的 API。这些 API 非常适合加载 Python 创建的模型以及在 Go 应用中执行。本文将介绍如何安装和配置 TensorFlow Go 包

警告: TensorFlow Go 语言 API 并不属于 TensorFlow API 稳定性保障

支持的平台

你可以在下面的操作系统上安装 Go 版本 TensorFlow:

  • Linux
  • Mac OS X

安装

Go 版本 TensorFlow 依赖于 TensorFlow C 语言库。按照下面的步骤安装这个库并启用 TensorFlow:

  1. 决定在运行 TensorFlow 时仅仅启用 CPU 还是和 GPU 一起启用。为了帮助你做这个决定,请阅读以下指南中的“决定安装哪个 TensorFlow ”部分:

    • @{install_linux#determine_which_tensorflow_to_install在 Linux 中安装 TensorFlow}
    • @{install_mac#determine_which_tensorflow_to_install在 macOS 中安装 TensorFlow}
  2. 通过执行以下命令下载并解压 TensorFlow C 语言库到 /usr/local/lib 目录:

    TF_TYPE="cpu" # Change to "gpu" for GPU support
    TARGET_DIRECTORY='/usr/local'
    curl -L \
      "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-${TF_TYPE}-$(go env GOOS)-x86_64-1.4.0-rc0.tar.gz" |
    sudo tar -C $TARGET_DIRECTORY -xz
    复制代码

    tar 命令会解压 TensorFlow C 语言库到 TARGET_DIRECTORY 的子目录 lib。比如,指定 /usr/local 作为 TARGET_DIRECTORY 使得 tar 命令可以将 TensorFlow C 语言库解压到 /usr/local/lib。 如果你想把库文件解压到其他目录,更换 TARGET_DIRECTORY 就可以了。

  3. 在第二步中,如果你指定了一个系统目录(比如 /usr/local)作为 TARGET_DIRECTORY,那么需要运行 ldconfig 来配置链接。例如:

    sudo ldconfig

    如果你指定的 TARGET_DIRECTORY 不是一个系统目录(比如 ~/mydir),那么你必须要将这个解压目录(比如 ~/mydir/lib)添加到下面这两个环境变量中:

     export LIBRARY_PATH=$LIBRARY_PATH:~/mydir/lib # 用于 Linux 和 Mac OS X
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/mydir/lib # 仅用于 Linux
    export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:~/mydir/lib # 仅用于 Mac OS X
  4. 现在 TensorFlow C 语言库已经安装好了,执行 go get 来下载对应的包和相应的依赖:

    go get github.com/tensorflow/tensorflow/tensorflow/go
  5. 执行 go test 来验证 Go 版本 TensorFlow 是否安装成功:

    go test github.com/tensorflow/tensorflow/tensorflow/go

如果 go get 或者 go test 产生错误信息了,可以在 StackOverflow 上通过搜索和提问来获取可能的解决方法。

Hello World

安装完 Go 版本 TensorFlow 之后,在 hello_tf.go 文件中输入下面的代码:

package main

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

func main() {
	// Construct a graph with an operation that produces a string constant.
	s := op.NewScope()
	c := op.Const(s, "Hello from TensorFlow version " + tf.Version())
	graph, err := s.Finalize()
	if err != nil {
		panic(err)
	}

	// Execute the graph in a session.
	sess, err := tf.NewSession(graph, nil)
	if err != nil {
		panic(err)
	}
	output, err := sess.Run(nil, []tf.Output{c}, nil)
	if err != nil {
		panic(err)
	}
	fmt.Println(output[0].Value())
}
复制代码

关于 TensorFlow Go 语言的进阶示例请查看 example in the API documentation,这个例子使用了一个通过 TensorFlow 预训练的模型来标记图片的内容。

运行

通过调用下面的命令来运行 hello_tf.go

go run hello_tf.go
Hello from TensorFlow version number

这个程序可能会输出类似下面的警告信息,你可以忽略它们:

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library
wasn't compiled to use *Type* instructions, but these are available on your
machine and could speed up CPU computations.

使用源码编译

TensorFlow 是开源的。你可以按照这个单独的文档中的指引使用 TensorFlow 的源码来编译 Go 版本 TensorFlow 。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

收藏成功!
已添加到「」, 点击更改