Slide 1

Slide 1 text

Overview  of  TF  v1.0 + High  Level  API  /  Keras Norihiro Shimoda

Slide 2

Slide 2 text

⾃自⼰己紹介 • Norihiro Shimoda(@rindai87) • TensorFlow User  Group(TFUG)主催者 • 最近GDE(Google  Developer  Expert)の ML  Expertになりました

Slide 3

Slide 3 text

Agenda • TensorFlowの概要 • TensorFlow v1.0の概要 • High  Level  API  /  Keras

Slide 4

Slide 4 text

TensorFlowの概要

Slide 5

Slide 5 text

TensorFlowとは? • Googleがオープンソース化した機械学習 のライブラリ • 2015年年11⽉月に公開 • Google社内でも実際に使われている(と ⾔言われている)

Slide 6

Slide 6 text

TensorFlowのモデル 1. 学習モデルをグラフとし て定義する 2. 学習を実際にどう⾏行行うか も定義する – 学習の評価⽅方法 – 最適化の⽅方法 – CPU  or  GPU – スタンドアロン or  分散 3. 定義に従って計算処理理を デバイス上で実⾏行行させる

Slide 7

Slide 7 text

TensorFlowの歴史

Slide 8

Slide 8 text

TensorBoardなどのツール

Slide 9

Slide 9 text

その他のTensorFlow情報 1. Google内でのTensorFlow 2. TensorFlowの事例例 3. TensorFlowコミュニティ 4. 企業でのTensorFlow

Slide 10

Slide 10 text

TensorFlow v1.0の概要

Slide 11

Slide 11 text

V1.0を三⾏行行でまとめると… Fast Flexible Production-‐‑‒ready

Slide 12

Slide 12 text

三⾏行行まとめをもう少し詳しく • Fast – めっちゃパフォーマンス良良くなりました • Flexible – ⾼高レベルAPIが本格的に導⼊入されました • Production-‐‑‒ready – APIは安定させます • その他もいろいろあります – デバッガ(tfdbg)、多⾔言語対応など

Slide 13

Slide 13 text

Fast • パフォーマンスの⼤大幅な向上 – 64GPU上でのInception  v3の処理理が58倍⾼高 速になった! • XLAの導⼊入 – Accelerated  Linear  Algebraの略略 – コンパイラ – この後のセッションで詳細を話します https://developers-‐‑‒jp.googleblog.com/2017/03/xla-‐‑‒tensorflow-‐‑‒compiled.html

Slide 14

Slide 14 text

Flexible • High  Level  APIの本格的な導⼊入 – この後詳細をお話します • Kerasとの統合 – 割と個⼈人的にはビッグニュース

Slide 15

Slide 15 text

Production  Ready • APIの安定化 – V0.11,  v0.12辺りの混乱が収束するはずJ – が、後⽅方互換性崩れてますL – が、移⾏行行ツールが提供されていますJ https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility

Slide 16

Slide 16 text

その他 • デバッガ(tfdbg) – 待望のデバッグツール – まだちゃんと触れていませんが期待⼤大 • 多⾔言語対応 – JavaとGoがExperimentalながら対応

Slide 17

Slide 17 text

High  Level  API  /  Keras

Slide 18

Slide 18 text

TensorFlowの超基本 1. ⼊入⼒力力⽤用にplaceholderを⽤用意 2. 重みやバイアス⽤用にVariableを⽤用意 3. 活性化関数を使って層を定義 4. ロス値を定義 5. 最適化の⽅方法を定義 6. セッションを定義して学習を実⾏行行

Slide 19

Slide 19 text

この後のサンプルコード • わかりやすくDNN – 隠れ層3層で全て全結合層 – ユニット数は10,20,10 • サンプルデータとしてはirisデータ – クラス数は3 – 特徴量量の次元数は4 • サンプルコード⾃自体はQiitaで解説付きで 公開しています http://qiita.com/rindai87/items/72651c702e9265595047

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

⽣生TensorFlow⾟辛い問題 • APIがけっこう低レベルなため、アルゴリ ズム構築に集中したい⼈人には⾮非常に敷居 が⾼高い – TensorFlowのパラダイムへの理理解が必須 – そのため、学習コストが⾼高い • PlaceholderとかVariableとかSessionとか

Slide 23

Slide 23 text

従来の⽣生TF⾟辛い問題の解決法 • tf.contrib.learn – ⾼高レベルなAPI • Keras – TensorFlowのラッパー – 作者がGoogleの中の⼈人 • その他いろいろ – SlimとかTFLearnとか

Slide 24

Slide 24 text

tf.contrib.learn • V1.0以前から導⼊入されていた⾼高レベルAPI – 今も残っていて現役で使える • もともとはSkFlowという外部ライブラリ – scikit-‐‑‒learnライクにTF使いましょう、という コンセプト • V0.8からTF本体に取り込まれて TFLearn(tf.contrib.learn)となる

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Keras • TensorFlowとTheanoのラッパーライブ ラリ • ネットワークを直感的に記述できる – ⽣生TFのようにTensorFlowの流流儀を覚える必 要がない • アルゴリズム側に集中したい⼈人にとって は良良い選択肢 • 全機能がラップされているわけではない

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

V1.0で⾊色々整理理されはじめます • V1.0で混沌としていた⾼高レベルAPI周りの 整理理とロードマップの提⽰示が⾏行行われまし た – Layers – Estimator • Kerasを正式にサポート – そもそもKerasの中の⼈人はGoogler

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Layers • モデル(ネットワーク)を定義するため のAPI群 • Kerasのように直感的にモデルを記述して いくことができる • Variableの概念念は登場しない – Layersのオブジェクトを直接触ることも可能 なので、その場合はPlaceholderは登場する

Slide 31

Slide 31 text

Layersのイメージ Input (4dim) hidden1 hidden2 hidden3 Output (3classes) IrisデータをDNNでモデルを 作る簡単な例例で⾒見見てみる ・4次元データ ・クラスは3 ・隠れ層は3層

Slide 32

Slide 32 text

Layersのイメージ input hidden1 hidden2 hidden3 output input_̲layer=tf.reshape(features,   [-‐‑‒1,  4])

Slide 33

Slide 33 text

Layersのイメージ input hidden1 hidden2 hidden3 output hidden1=tf.layers.dense( inputs=input_̲layers,   units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features,   [-‐‑‒1,  4])

Slide 34

Slide 34 text

Layersのイメージ input hidden1 hidden2 hidden3 output hidden1=tf.layers.dense( inputs=input_̲layers,   units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features,   [-‐‑‒1,  4]) hidden2=tf.layers.dense(…) hidden3=tf.layers.dense(…)

Slide 35

Slide 35 text

Layersのイメージ input hidden1 hidden2 hidden3 output hidden1=tf.layers.dense( inputs=input_̲layers,   units=10, activation=tf.nn.relu) input_̲layer=tf.reshape(features,   [-‐‑‒1,  4]) output_̲layer=tf.layers.dense( inputs=hidden3, units=3) hidden2=tf.layers.dense(…) hidden3=tf.layers.dense(…)

Slide 36

Slide 36 text

Estimator • モデルを使った学習、評価、推論論のタス クを記述するための標準的なインター フェイスを提供するAPI群 • Scikit-‐‑‒learn経験者にはおなじみにイン ターフェース+α – fit():学習 – evaluate():評価 – predict():推論論 – etc…

Slide 37

Slide 37 text

Estimatorのイメージ input Model output 実際はこれだけではなくて

Slide 38

Slide 38 text

Estimatorのイメージ input Model Training 記述したモデルを使って 学習、(学習モデルの)評価、推定を⾏行行う Evaluation Prediction

Slide 39

Slide 39 text

Estimatorのイメージ input Model Training 学習、評価、推定に関わるタスクは全てEstimator内に 隠蔽して標準的なインターフェースを提供 TensorFlowの種々の概念念もEstimator内に内包 Evaluation Prediction fit() evaluate() predict() session graph etc… Estimator

Slide 40

Slide 40 text

Canned  Estimator • Layers,  Estimatorのお陰で、モデルに対 して標準的なインターフェースが提供さ れている状態になる • これを利利⽤用して、様々なEstimator(つま りアルゴリズム)を提供していく – インターフェースが共通化されているので、 同⼀一データに対して様々なアルゴリズムを簡 単に試せるようになる • おっとこれはscikit-‐‑‒learnな感じですね、 と思ったあなた、正解です

Slide 41

Slide 41 text

Kerasの正式サポート • LayersをKerasの層を定義するレイヤー (Denseなど)と互換性のあるものとする • EstimatorとKerasでの互換性を担保する 設計 • これまで通りTFをラップしたKeras • tf.kerasの導⼊入により、TF内部でkerasのコードが 動くようになる?

Slide 42

Slide 42 text

Keras正式サポートの恩恵 • 今までKerasから使えていなかった各種TFの 機能が使えるようになる – 分散処理理による学習 – CloudMLでの実⾏行行 • これまではCloudMLのプロビジョニングの段階でKeras をpip  installするというハックで解決していた • なお、この解決⽅方法を使ってもKerasからはGCSに置い ているデータを読みにいけないという問題が残っている – TensorFlow Serving – etc…

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Thank  you!!