特にGoで使ってみたいという需要はないが、できるのでやってみたという感じ。
公式のページが詳しいのでここを参考に -> Install TensorFlow for Go | TensorFlow
また、別途C言語のTensorFlowライブラリが必要になるので、こちらもインストールする -> Install TensorFlow for C | TensorFlow
今回試した環境は
- macOS 10.14.2
- Go 1.11.2
- TensorFlow
まずは、C言語のライブラリのインストール。
これは、公式のページにあるリンクから圧縮ファイルをダウンロード、展開し、置いた場所へのパスを設定すれば完了。
今回はプロジェクトのディレクトリに「libtensorflow」という名前で配置し、その中のlibディレクトリへのパスを設定した。
export LIBRARY_PATH=$LIBRARY_PATH:/pass/to/project/libtensorflow/lib export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/path/to/project/libtensorflow/lib
次に、GoのTensorFlowのインストール。
これはgo get
するだけで良いが、上記のC言語のライブラリのパスが通っていないのとインストールに失敗してしまうので注意。
go get github.com/tensorflow/tensorflow/tensorflow/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()) }
go run hello_tf.go
Kerasが使えない、またドキュメントも少ない状態。
Pythonで作成したモデルを読み込むこともできるようなので、Goで書いたアプリ上で動かす場合の選択肢の一つといったところかもしれない。
次はこれをためしてみたい。