tensor flow勉強会3

24
シシシシシシシシシシシ TensorFlow シ C++ シシシシシ TensorFlow シシシ シ 3 シ 06/12/2022 C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Upload: tak9029

Post on 16-Apr-2017

2.873 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Tensor flow勉強会3

05/03/2023

シーエイトラボ株式会社

TensorFlow を C++ の観点から

TensorFlow 勉強会 第 3 回

C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 2: Tensor flow勉強会3

2

自己紹介新村拓也(しんむら たくや)1990年鹿児島生まれレコメンド、検索エンジン、画像解析、未来予測などのデータ周りのことをやっています。シーエイトラボ株式会社代表取締役

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 3: Tensor flow勉強会3

3

今日の話の注意事項 成功体験はほとんど話しません ある程度技術よりの話になります 皆さんもお分かりの通り、開発は壁にぶち当たることが多いです 使った時に苦労したことを話します TensorFlow を Dis るわけではありません TF に限らず、どんなライブラリや言語でもこれどうするんだっけ?という悩みがあると思います 同じ悩みを抱えているだろう人がいると思われます 勉強会なので、質疑や懇親会で議論して悩みを共有して解決しましょう! TF0.7 でのないようになります。 0.8 では改正されている点もあります。

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 4: Tensor flow勉強会3

4

今回の話の経緯 物体の相対位置計測

画像に移るとある物体とカメラの相対位置を計測 分類ではなく回帰問題

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

・カメラとの相対距離(x,y,z)・カメラとの相対角度

(roll,pitch,yaw)

を算出する。

Page 5: Tensor flow勉強会3

5

当初やってたこと (x, y z, roll, pitch , yaw) = (1, 2, 3, 0.5π, 1.5π, 0.2π)=> このまま教師データに使おう!!!!!(標準化したとしても)

05/03/2023C8Lab 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π )

この誤差を伝播すれば。。。

Page 6: Tensor flow勉強会3

6 05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

間違いなのでは

Page 7: Tensor flow勉強会3

7

理由

05/03/2023C8Lab 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π )

そんなに違う?

Page 8: Tensor flow勉強会3

8

対策 単位四元数(クヲォータニオン)の係数を使おう

複素数の虚部を3次元に拡張したもの 姿勢計測の分野でよく用いられる 3 D ゲームなどでもよく用いられている

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 9: Tensor flow勉強会3

9

問題再び

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

h=0.1

h=0.2

h=0.3

h=0.4

四元数の条件を満たしていない。

Page 10: Tensor flow勉強会3

10

単位四元数の条件

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

各出力を2乗して足したら1になる必要がある

Page 11: Tensor flow勉強会3

11

条件を満たすために 出力層の発火関数は以下の条件を満たす必要がある

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

さすがにデフォルトの機能では無理

Page 12: Tensor flow勉強会3

12

やっと本題 Adding a New Op

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 13: Tensor flow勉強会3

13

オペレーション追加に必要なこと オペレーションを定義する( C++ )

インプットアウトプット定義 カーネルに登録及び実装をする( C++ )

実際にインプットがきたらどのように計算するか (必要なら)勾配を定義する( python )

評価関数をそのオペレーションへのインプットの勾配で定義

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 14: Tensor flow勉強会3

14

オペレーション登録

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

コレ

Page 15: Tensor flow勉強会3

15

カーネル実装登録

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

コレ

Page 16: Tensor flow勉強会3

16

とりあえずビルドしてみる

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

結果

Include するべきファイルがない!何故?Ubuntu でも同様の現象が起きました。

Page 17: Tensor flow勉強会3

17

原因

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Include パス内にある中身の違い

バイナリからインストールした時 ソースからビルドした時

ソースからビルドとバイナリからビルドした時に中身が違う。。

Page 18: Tensor flow勉強会3

18

反省

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

他の環境ビルドされた成果物を信じたお前が悪い

Page 19: Tensor flow勉強会3

19

問題再び

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

結果

リンカエラーや、 tensorflow なんてやついないと怒られたり。。g++ を xcode 経由で入れているから何か問題があるのか?

Page 20: Tensor flow勉強会3

20

結局

Ubuntu でやったら解決しました

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 21: Tensor flow勉強会3

21

最後の問題 勾配定義

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

プログラムだとちょっとわかりにくかったのでコメントから解読

Page 22: Tensor flow勉強会3

22

意味 勾配の定義

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

入力 u 出力 a

return するもの

引数で与えられる grad

計算してあげないとダメなもの

Page 23: Tensor flow勉強会3

23

結果とまとめ 無事に Op 登録を行えました 念の為に mnist を使ってチェック

ミスがあれば精度 0.098 になります まとめ

ドキュメントにあるんだから楽勝だろうと思っていたらヤケドした オープンソースなんだからソースからビルドしましょう 何故か解決してしまった Ubuntu, Mac の違いが気になりっぱなし ドキュメントよりコード、コメントのほうが参考になった 自由自在に使いこなすまでの道のりは遠い… .

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved

Page 24: Tensor flow勉強会3

24

ご清聴有難うございました!

05/03/2023C8Lab Copyright 2014 C8Lab Inc. All rights reserved