本文出自 掘金翻译计划 正在组织翻译的 TensorFlow 官方文档。若是您有兴趣,欢迎 申请成为译者,学习完译者教程后,参与到文章和文档的翻译和及对当中。咱们也正在招募 TensorFlow 译者,欢迎积极参加。前端
TensorFlow 提供了 Go 程序中能够调用的 API。这些 API 很是适合加载 Python 建立的模型以及在 Go 应用中执行。本文将介绍如何安装和配置 TensorFlow Go 包。linux
警告: TensorFlow Go 语言 API 并不属于 TensorFlow API 稳定性保障。android
你能够在下面的操做系统上安装 Go 版本 TensorFlow:ios
Go 版本 TensorFlow 依赖于 TensorFlow C 语言库。按照下面的步骤安装这个库并启用 TensorFlow:git
决定在运行 TensorFlow 时仅仅启用 CPU 仍是和 GPU 一块儿启用。为了帮助你作这个决定,请阅读如下指南中的“决定安装哪一个 TensorFlow ”部分:github
经过执行如下命令下载并解压 TensorFlow C 语言库到 /usr/local/lib
目录:c#
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
来配置连接。例如:api
sudo ldconfig
若是你指定的 TARGET_DIRECTORY
不是一个系统目录(好比 ~/mydir
),那么你必需要将这个解压目录(好比 ~/mydir/lib
)添加到下面这两个环境变量中:session
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 上经过搜索和提问来获取可能的解决方法。
安装完 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、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。