本文出自 掘金翻译计划 正在组织翻译的 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:
-
决定在运行 TensorFlow 时仅仅启用 CPU 还是和 GPU 一起启用。为了帮助你做这个决定,请阅读以下指南中的“决定安装哪个 TensorFlow ”部分:
- @{在 Linux 中安装 TensorFlow}
- @{在 macOS 中安装 TensorFlow}
-
通过执行以下命令下载并解压 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
就可以了。 -
在第二步中,如果你指定了一个系统目录(比如
/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
-
现在 TensorFlow C 语言库已经安装好了,执行
go get
来下载对应的包和相应的依赖:go get github.com/tensorflow/tensorflow/tensorflow/go
-
执行
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 。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。