Upload
Login
Signup
Submit Search
Home
Explore
Tensorgo
1
of
18
Tensorgo
51 views
Share
Like
Download
...
YoshitomoYasuno
Follow
Published on
Dec 3, 2018
Tensorflow + Goで画像認識してみた話
...
Published in:
Technology
1 Comment
0 Likes
Statistics
Notes
Post
Login to see the comments
Tensorgo
1. Go⾔言語でTensorFlow を使う 楊野 良智(Yasu)
2.
⾃自⼰己紹介 • 名前 楊野 良智(やすの よしとも) • 所属 東京理理科⼤大学⼯工学部第⼆二部経営⼯工学科 • ⽇日中はTeamLabアルバイト • 普段はRailsでECサイトのAPIの開発をしています。
3.
TensorFlow + Golang
4.
TensorFlowとは? • データフローグラフを使⽤用して数値計算を⾏行行うためのラ イブラリ • Googleが開発 • 多⾔言語対応しておりPython, C, C++, Javaなどに対応して いる • もちろんGoでも利利⽤用可能
5.
TensorFlow Go (1) • Go⾔言語でのtensorflowパッケージはC⾔言語のtensorflow パッケージをバインドする形で実装されている • C⾔言語の共有ライブラリlibtensorflow.soを利利⽤用するため TensorFlow Cをインストールする必要あり https://www.tensorflow.org/install/lang_go • GoではPythonのようにデータフローグラフの作成、構築 が出来ない(現状C, Pythonでしか提供されていない)
6.
TensorFlow Go (2) • なので利利⽤用する際はPythonで学習した学習済みモデルを Go側で呼び出して利利⽤用する。
7.
実際にやってみる • MNIST⼿手書き⽂文字の識別をする。 • 画像データをkaggleから取ってきてPythonでデータを学 習(CNN)しGo⾔言語で学習済みモデルとパラメーターを取 得、渡された画像ファイルがどの⽂文字に該当するか判別 するAPIを作る。
8.
構成 Python Protocol Buffers Request Response
9.
Pythonでデータを保存する • tensorflowのBuilderクラスを使ってprotocol buffersの形式 で保存する • hdf5の形式ではGoで扱えないのでprotocol buffersの形式 で扱う必要あり • 次のコードを実⾏行行すると学習済みデータが保存される。
10.
GoでServeする • Goでpackage tensorflowを使ってServeする • まず先程作成した学習済みデータを読み込む
11.
GoでServeする • これを⾏行行うとmodel変数に学習済みデータのSessionと Graphのデータが⼊入ったtensorflow.SavedModel型が返さ れ • Sessionでは値が保持されるため使い終わったらCloseす る必要あり
12.
⼊入⼒力力画像をtensorに変換 • Pythonで学習する際に画像データを28x28に変換して学習 させているのでGo側でも画像を変換する必要がある。 • また、GoではなくTensorFlowが認識できるTensorに変換 する • model.Session.Runの第⼀一引数にfeeds map[Output]*Tensorの形でtensorを与える • tensorはtensorflow.NewTensor()で作成可能
13.
まとめ • Go+TensorFlowだけではデータフローグラフの構成、学 習は出来ないけど学習済みモデルを簡単に利利⽤用できる • Pythonを利利⽤用するよりも早く処理理できるのでGoで構築さ れたアプリケーションに組み込むのにおすすめ
14.
gopher道場に参加して • Goは今まで独学で勉勉強していたので実務の観点から勉勉強 できて⾮非常に有意義でした • 質問をたくさんしようと思ったのですが何が分からない のかが分からない状態が多々あり質問をあまりできなかっ たのが⼼心残りです。
Save this presentation
Login to see the comments