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