SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Go⾔言語でTensorFlow
を使う
楊野 良智(Yasu)
⾃自⼰己紹介
• 名前 楊野 良智(やすの よしとも)

• 所属 東京理理科⼤大学⼯工学部第⼆二部経営⼯工学科

• ⽇日中はTeamLabアルバイト

• 普段はRailsでECサイトのAPIの開発をしています。
TensorFlow + Golang
TensorFlowとは?
• データフローグラフを使⽤用して数値計算を⾏行行うためのラ
イブラリ

• Googleが開発

• 多⾔言語対応しておりPython, C, C++, Javaなどに対応して
いる

• もちろんGoでも利利⽤用可能
TensorFlow Go (1)
• Go⾔言語でのtensorflowパッケージはC⾔言語のtensorflow
パッケージをバインドする形で実装されている

• C⾔言語の共有ライブラリlibtensorflow.soを利利⽤用するため
TensorFlow Cをインストールする必要あり

https://www.tensorflow.org/install/lang_go

• GoではPythonのようにデータフローグラフの作成、構築
が出来ない(現状C, Pythonでしか提供されていない)
TensorFlow Go (2)
• なので利利⽤用する際はPythonで学習した学習済みモデルを
Go側で呼び出して利利⽤用する。
実際にやってみる
• MNIST⼿手書き⽂文字の識別をする。

• 画像データをkaggleから取ってきてPythonでデータを学
習(CNN)しGo⾔言語で学習済みモデルとパラメーターを取
得、渡された画像ファイルがどの⽂文字に該当するか判別
するAPIを作る。
構成
Python
Protocol Buffers
Request
Response
Pythonでデータを保存する
• tensorflowのBuilderクラスを使ってprotocol buffersの形式
で保存する

• hdf5の形式ではGoで扱えないのでprotocol buffersの形式
で扱う必要あり

• 次のコードを実⾏行行すると学習済みデータが保存される。
GoでServeする
• Goでpackage tensorflowを使ってServeする

• まず先程作成した学習済みデータを読み込む
GoでServeする
• これを⾏行行うとmodel変数に学習済みデータのSessionと
Graphのデータが⼊入ったtensorflow.SavedModel型が返さ
れ

• Sessionでは値が保持されるため使い終わったらCloseす
る必要あり
⼊入⼒力力画像をtensorに変換
• Pythonで学習する際に画像データを28x28に変換して学習
させているのでGo側でも画像を変換する必要がある。

• また、GoではなくTensorFlowが認識できるTensorに変換
する

• model.Session.Runの第⼀一引数にfeeds
map[Output]*Tensorの形でtensorを与える

• tensorはtensorflow.NewTensor()で作成可能
まとめ
• Go+TensorFlowだけではデータフローグラフの構成、学
習は出来ないけど学習済みモデルを簡単に利利⽤用できる

• Pythonを利利⽤用するよりも早く処理理できるのでGoで構築さ
れたアプリケーションに組み込むのにおすすめ
gopher道場に参加して
• Goは今まで独学で勉勉強していたので実務の観点から勉勉強
できて⾮非常に有意義でした

• 質問をたくさんしようと思ったのですが何が分からない
のかが分からない状態が多々あり質問をあまりできなかっ
たのが⼼心残りです。

Weitere ähnliche Inhalte

Ähnlich wie Tensorgo

TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
Etsuji Nakai
 
Cat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 DraftCat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 Draft
Self Employed
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
 

Ähnlich wie Tensorgo (20)

tfug-kagoshima
tfug-kagoshimatfug-kagoshima
tfug-kagoshima
 
JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラJUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラ
 
20090828 Webconlocal
20090828 Webconlocal20090828 Webconlocal
20090828 Webconlocal
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
内省するTensorFlow
内省するTensorFlow内省するTensorFlow
内省するTensorFlow
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作るGoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
 
[DL Hacks]色々と進化しているTensorFlow - 紹介編 -
[DL Hacks]色々と進化しているTensorFlow - 紹介編 -[DL Hacks]色々と進化しているTensorFlow - 紹介編 -
[DL Hacks]色々と進化しているTensorFlow - 紹介編 -
 
Cat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 DraftCat tool overview for CEDEC2011 Draft
Cat tool overview for CEDEC2011 Draft
 
Pipenvのご紹介 v2
Pipenvのご紹介 v2Pipenvのご紹介 v2
Pipenvのご紹介 v2
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
Laravelを使ってみた
Laravelを使ってみたLaravelを使ってみた
Laravelを使ってみた
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!
 
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみたTensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでSphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
 

Tensorgo