Advertisement
Advertisement

More Related Content

Advertisement
Advertisement

Tensor flow勉強会3

  1. シーエイトラボ株式会社 TensorFlowをC++の観点から TensorFlow勉強会 第3回 2016/4/15C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  2. 2 自己紹介 新村拓也(しんむら たくや) 1990年鹿児島生まれ レコメンド、検索エンジン、画像解析、未来予測 などのデータ周りのことをやっています。 シーエイトラボ株式会社代表取締役 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  3. 3 今日の話の注意事項  成功体験はほとんど話しません  ある程度技術よりの話になります  皆さんもお分かりの通り、開発は壁にぶち当たることが多いです  使った時に苦労したことを話します  TensorFlowをDisるわけではありません  TFに限らず、どんなライブラリや言語でもこれどうするんだっけ?という 悩みがあると思います  同じ悩みを抱えているだろう人がいると思われます  勉強会なので、質疑や懇親会で議論して悩みを共有して解決しましょ う!  TF0.7でのないようになります。0.8では改正されている点もあります。 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  4. 4 今回の話の経緯  物体の相対位置計測  画像に移るとある物体とカメラの相対位置を計測  分類ではなく回帰問題 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved ・カメラとの相対距離 (x,y,z) ・カメラとの相対角度 (roll,pitch,yaw) を算出する。
  5. 5 当初やってたこと  (x, y z, roll, pitch , yaw) = (1, 2, 3, 0.5π, 1.5π, 0.2π) => このまま教師データに使おう!!!!!(標準化したとしても) 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 正解(1, 2, 3, 0.5π, 1.5π, 0.1π) 出力(1, 2, 3, 0.5π, 1.5π, -1.9π) この誤差を伝播す れば。。。
  6. 6 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 間違いなのでは
  7. 7 理由 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 正解(1, 2, 3, 0.01π, 0.01π, 0.01π) 観測(1, 2, 3, -0.99π, -0.99π, -0.99π) そんなに違う?
  8. 8 対策  単位四元数(クヲォータニオン)の係数を使おう  複素数の虚部を3次元に拡張したもの  姿勢計測の分野でよく用いられる  3Dゲームなどでもよく用いられている 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  9. 9 問題再び 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved h=0.1 h=0.2 h=0.3 h=0.4 四元数の条件を満たしていない。
  10. 10 単位四元数の条件 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved q = a+bi+cj +dk q = a2 +b2 +c2 +d2 =1 各出力を2乗して足したら1になる必要がある
  11. 11 条件を満たすために  出力層の発火関数は以下の条件を満たす必要がある 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved yj = ± e xj ( ) 2 exk ( ) 2 k å さすがにデフォルトの機能では無理
  12. 12 やっと本題  Adding a New Op 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  13. 13 オペレーション追加に必要なこと  オペレーションを定義する(C++)  インプットアウトプット定義  カーネルに登録及び実装をする(C++)  実際にインプットがきたらどのように計算するか  (必要なら)勾配を定義する(python)  評価関数をそのオペレーションへのインプットの勾配で定義 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  14. 14 オペレーション登録 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved コレ
  15. 15 カーネル実装登録 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved コレ
  16. 16 とりあえずビルドしてみる 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 結果 Include するべきファイルがない!何故? Ubuntuでも同様の現象が起きました。
  17. 17 原因 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved Includeパス内にある中身の違い バイナリからインストールした 時 ソースからビルドした時 ソースからビルドとバイナリからビルドした時に中身が違う。。
  18. 18 反省 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 他の環境ビルドされた 成果物を信じた お前が悪い
  19. 19 問題再び 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 結果 リンカエラーや、tensorflowなんてやついないと怒られたり。。 g++をxcode経由で入れているから何か問題があるのか?
  20. 20 結局 Ubuntuでやったら解決しました 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  21. 21 最後の問題  勾配定義 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved プログラムだとちょっとわかりにくかったのでコメントから解読
  22. 22 意味  勾配の定義 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved 入力u 出力a ¶f ¶u = ¶f ¶a ¶a ¶u return するもの 引数で与えられるgrad 計算してあげないとダメなもの
  23. 23 結果とまとめ  無事にOp登録を行えました  念の為にmnistを使ってチェック  ミスがあれば精度0.098になります  まとめ  ドキュメントにあるんだから楽勝だろうと思っていたらヤケドした  オープンソースなんだからソースからビルドしましょう  何故か解決してしまったUbuntu, Macの違いが気になりっぱなし  ドキュメントよりコード、コメントのほうが参考になった  自由自在に使いこなすまでの道のりは遠い…. 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
  24. 24 ご清聴有難うございました! 2016/4/15 C8Lab Copyright 2014 C8Lab Inc. All rights reserved
Advertisement