Tensorgo

51 views

Published on

Tensorflow + Goで画像認識してみた話

Published in: Technology

Tensorgo

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