O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
1
シンギュラリティ株式会社
TensorFlowを用いた様々なRNNの実装(2)
TFUG#4
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
2 2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
 自己紹介
新村拓也
- シーエイトラボ株式会社 代表取締役
- シンギュラリティ株式会社...
3
前回のお話について
 TensorFlow勉強会(TFUGではない)で第1回のお話をしました
 TensorFlowでRNNやると実は結構苦労する
 チュートリアルがチュートリアルになってない(CIFER10然り)
 それならば俺が...
4
RNNとは(一応)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
入力1 入力2 入力3
中間1 中間2 中間3
出力1 出力2 出力3
...
5
前回のお話について
 インポートするべきパッケージ
 tf.nn.rnn_cell・・・各時間の中間層における挙動を定義
 tf.nn.rnnなど・・・入力とrnn_cellを受け取って、その出力を管理する
 基本的なRNN構築手順...
6
前回のお話について
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
http://karpathy.github.io/2015/05/21...
7
今回のお話について
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
http://karpathy.github.io/2015/05/21...
8
そのまえに、TF1.0になって、、、
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
9
大きな変更(1)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
CNN君たちとはお別れで、tf.nnからtf.contribにお引越し
c...
10
大きな変更(2)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
なんかいた、row_rnn
このAPIまだテスト中だから変わるよ!
11
大きな変更(3)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
翻訳のチュートリアルで使われていた関数たちは、、、
tf.contrib...
12
大きな変更(4)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
非推奨になってしまいました。
代わりのものがtf.contrib.seq...
13
しかし!!
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
dynamic_rnnは生きていた!!
14
思うに(RNNCell系)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
いろいろ増えてる、特にこの下の方の中身
いろいろ調整中なだけで...
15
思うに(RNN系)
モデル構築時にTensorのリストをforループで回してグラフを量産するよう
な奴は多分非推奨になっていく気がする。
2017/4/19
Singularity Copyright 2016 Singularity I...
16
思うに(RNN系)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
入力を一つにして内部的にwhile_loop, TensorArray...
17
やっと本題
めげずにこの環境でseq2seqを解説して行きます。
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
入力画像群の特徴を
圧縮...
18
今回作ったもの
過去6時間分のセンサーデータから向こう6時間を予測する
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
過去6時間ぶんのセ...
19
実は、、、、
2017年1月に農業AIハッカソンをしました
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
手法は問わなかったんですが、一...
20
データの受け渡し
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
Placeholderを使って受け渡しをする場合
For ループでpla...
21
データの受け渡し
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
feed_dictを作るときはget_collectionで引っ張ってく...
22
モデル構築(encoder)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
cellを定義して
入力データと一緒に突っ込
むだけ
23
モデル構築(decoder)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
cellの定義はencoderと同じだけど、以下の二つを自作...
24
Decoder側のRNNループ
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
時間長分ループして出力結果をリストにアペンドしていく
重み...
25
Decoder側出力層
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
いつもやってる重みとバイアスつかって掛け算
※reuse_vari...
26
モデル構築(誤差)
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
RNNループのようにfor文で回して誤差Tensorの配列を作る
最後...
27
回してみました
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
まあまあ、学習できているん
じゃなかろうか
28
とりま長く回してみたら
2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
さすがにパラメータとかも適
当すぎたか、、、、、
29
まとめ
 TF1.0になったがRNNは色々と変更が多そう
 非推奨かもしれないけど、リストにしてぶん回す方が直感的でわかりや
すい
 Seq2Seqでセンサーデータの予測やりました
 実データやるんだから設計、パラメータチューニン...
30 2017/4/19
Singularity Copyright 2016 Singularity Inc. All rights reserved
ご静聴ありがとうございました!
31
お問い合わせ
ご興味のある企業・団体・個人様は、以下までお問い合わせください。
シンギュラリティ株式会社
http://snglrty.net
東京都港区浜松町 2-7-15 三電舎ビル6F
Tel 03-5425-2545
取締役/CT...
Próximos SlideShares
Carregando em…5
×

Tfug#4

1.968 visualizações

Publicada em

TFUG#4

Publicada em: Engenharia
  • Seja o primeiro a comentar

Tfug#4

  1. 1. 1 シンギュラリティ株式会社 TensorFlowを用いた様々なRNNの実装(2) TFUG#4 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved
  2. 2. 2 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved  自己紹介 新村拓也 - シーエイトラボ株式会社 代表取締役 - シンギュラリティ株式会社 取締役CTO
  3. 3. 3 前回のお話について  TensorFlow勉強会(TFUGではない)で第1回のお話をしました  TensorFlowでRNNやると実は結構苦労する  チュートリアルがチュートリアルになってない(CIFER10然り)  それならば俺がチュートリアルになってやる! 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved https://www.slideshare.net/tak9029/tf5スライド
  4. 4. 4 RNNとは(一応) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 入力1 入力2 入力3 中間1 中間2 中間3 出力1 出力2 出力3 中間層を時間方向に展開させることにより時系列 情報をニューラルネットワークで扱えるように。 入力-中間層の重み 中間-中間層の重み 共有重みを用いている
  5. 5. 5 前回のお話について  インポートするべきパッケージ  tf.nn.rnn_cell・・・各時間の中間層における挙動を定義  tf.nn.rnnなど・・・入力とrnn_cellを受け取って、その出力を管理する  基本的なRNN構築手順  入力データ整形  cellを定義してラッピングなどをして各時間での挙動を定義  cellと入力データを元に、RNN全体で順伝播  出力を加工して出力層を作成  誤差計算、学習 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 前回の話は上記3つについて幾つかのパターンで
  6. 6. 6 前回のお話について 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved http://karpathy.github.io/2015/05/21/rnn-effectiveness/ 前回はこの二つを解説
  7. 7. 7 今回のお話について 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved http://karpathy.github.io/2015/05/21/rnn-effectiveness/ 今回はこれ!というかSeq2Seqについて 翻訳エンジン、会話エンジン、自動作曲 などに使われているやつです!
  8. 8. 8 そのまえに、TF1.0になって、、、 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved
  9. 9. 9 大きな変更(1) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved CNN君たちとはお別れで、tf.nnからtf.contribにお引越し contribにいるということは開発中なんで、まだどんどん変わるし一部は消える
  10. 10. 10 大きな変更(2) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved なんかいた、row_rnn このAPIまだテスト中だから変わるよ!
  11. 11. 11 大きな変更(3) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 翻訳のチュートリアルで使われていた関数たちは、、、 tf.contrib.egacy_seq2seqと変更されたうえに、、、、
  12. 12. 12 大きな変更(4) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 非推奨になってしまいました。 代わりのものがtf.contrib.seq2seqとして開発中です
  13. 13. 13 しかし!! 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved dynamic_rnnは生きていた!!
  14. 14. 14 思うに(RNNCell系) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved いろいろ増えてる、特にこの下の方の中身 いろいろ調整中なだけで近々戻ってくると思う Kerasのlayerライクにしていく云々とリリースノートにも書いてあった
  15. 15. 15 思うに(RNN系) モデル構築時にTensorのリストをforループで回してグラフを量産するよう な奴は多分非推奨になっていく気がする。 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved もともとのtf.nn.rnnもtf.nn.seq2seqも inputs: [batch_size, input_size] のTensorのリストで 確かにグラフが重くなるので多分なくなっていく?(扱いやすいんだけどね)
  16. 16. 16 思うに(RNN系) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 入力を一つにして内部的にwhile_loop, TensorArrayとか使って回す方向にシフト 柔軟な設計はloop_fnを用いて行う
  17. 17. 17 やっと本題 めげずにこの環境でseq2seqを解説して行きます。 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 入力画像群の特徴を 圧縮した中間層 出力側では、前の層の 出力が入力になる ※訓練時では正解データを与えることもあります
  18. 18. 18 今回作ったもの 過去6時間分のセンサーデータから向こう6時間を予測する 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 過去6時間ぶんのセンサーデータ 未来6時間ぶんのセンサーデータ気温、湿度、日射量などなど・・・
  19. 19. 19 実は、、、、 2017年1月に農業AIハッカソンをしました 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 手法は問わなかったんですが、一応Seq2Seqを用いたコードをサンプルコードにしました。 https://github.com/TakuyaShinmura/agri_ai
  20. 20. 20 データの受け渡し 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved Placeholderを使って受け渡しをする場合 For ループでplaceholderを量産して、後で参照できるようにadd_to_collection
  21. 21. 21 データの受け渡し 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved feed_dictを作るときはget_collectionで引っ張ってくる あくまでplaceholderを用いる場合。 TFRecordにしてTFのreaderメソッドでバッチ作成する方がスマート
  22. 22. 22 モデル構築(encoder) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved cellを定義して 入力データと一緒に突っ込 むだけ
  23. 23. 23 モデル構築(decoder) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved cellの定義はencoderと同じだけど、以下の二つを自作で作っていきましょう。  Rnnのループ処理(1ステップ前の出力を次に使えるように)  出力層の挙動
  24. 24. 24 Decoder側のRNNループ 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved 時間長分ループして出力結果をリストにアペンドしていく 重み再利用のために reuse_variables() 前の出力で入力をアップデート
  25. 25. 25 Decoder側出力層 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved いつもやってる重みとバイアスつかって掛け算 ※reuse_variables()をする関係上、variable_scope。そのため、変数宣言も tf.Variable()ではなくてtf.get_variable()
  26. 26. 26 モデル構築(誤差) 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved RNNループのようにfor文で回して誤差Tensorの配列を作る 最後にadd_nで足し合わせ 実際の精度評価のところもほぼ同じ。
  27. 27. 27 回してみました 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved まあまあ、学習できているん じゃなかろうか
  28. 28. 28 とりま長く回してみたら 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved さすがにパラメータとかも適 当すぎたか、、、、、
  29. 29. 29 まとめ  TF1.0になったがRNNは色々と変更が多そう  非推奨かもしれないけど、リストにしてぶん回す方が直感的でわかりや すい  Seq2Seqでセンサーデータの予測やりました  実データやるんだから設計、パラメータチューニングはしっかりしよう  もし次やるとしたらattentionとかやろうと思う 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved
  30. 30. 30 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved ご静聴ありがとうございました!
  31. 31. 31 お問い合わせ ご興味のある企業・団体・個人様は、以下までお問い合わせください。 シンギュラリティ株式会社 http://snglrty.net 東京都港区浜松町 2-7-15 三電舎ビル6F Tel 03-5425-2545 取締役/CTO 新村拓也 E-mail:info@snglrty.net 2017/4/19 Singularity Copyright 2016 Singularity Inc. All rights reserved

×