2020年7月28日火曜日

Tensorflow2をビルドする

いつのまにかTensorflowのバージョンが2に上がっている。
以前はVisualStudioでビルドできなかったのですが、バージョンアップに伴いWindowsでも簡単にビルドできるようになったっぽいのでおじさんもビルドしてみました。

bazelでビルドするとビルド途中でエラーが・・・
なんでだよ。

なのでbazelを使わないでビルドしてみました。
VisualStudio2019に以下のファイル追加すればbazelを使わないほかのビルドシステムでビルドできるっぽいですね。

・tensorflow/core以下の全ファイル
・tensorflow/core/kernelsは必要なものだけをビルド
・double-conversion
・farmhash
・protocolbuffer
・eigen
・giflib
・turbojpeg
・libpng
・sqlite3
・grpc
・nsync
・absl
・re2
・zlib
・snappy
・json-cpp
・bazelによって自動生成されるops_xxxxx.cpp
・gentoolによって自動生成されるxxxxx.pb_text.cc、xxxxx.pb_text.h、xxxxx_pb_text-impl.h
・protocによって自動生成されるxxxxx.pb.cc、xxxxx.pb.h

基本的にはtensorflow/coreをどうにかビルドできればtensorflowは動きます。
gpuとかtpuとかrpcとかがファイル名に入っているものは、gpuとかtpuとかrpcを使わないのであればいらないっぽいです。
これらのファイルを全部VisualStudio2019に追加すれば、bazelを使わなくてもtensorflowをビルドすることができます。

tensorflow/core/kerners内のファイルをたくさんビルドしようとすると、コンパイル時にヒープ領域が足りなくなるようで、
その時は以下の設定をするとよいそうです。
https://kenkyu-note.hatenablog.com/entry/2019/11/01/193301

ファイル名を「tensorflow/core/hoge.cc」から「tensorflow_core_hoge.cc」のように名前を変えれば、全部のファイルを一つのディレクトリに入れてビルドすることもできます。

tensorflowはopencvとよく併用されるので、ついでにopencvのソースも一部入れます。

いつものようにtensorflow2でmnistをやってみます。
https://qiita.com/iwatake2222/items/d7cb2bd10a8bbb81cd8b
mnistはこのサイトを参考にします。

これをベースに最小のtensorflow2を作ってみました。
https://drive.google.com/file/d/1UzCRcFLTe-VF8LDn1jP2hZumXNOYfmFR/view?usp=sharing


いつものようにこの画像を認識させてみます。


-----------------------
prob of 0: 0.000
prob of 1: 0.001
prob of 2: 0.013
prob of 3: 0.043
prob of 4: 0.929
prob of 5: 0.003
prob of 6: 0.001
prob of 7: 0.006
prob of 8: 0.001
prob of 9: 0.003
-----------------------

できた!


0 件のコメント:

コメントを投稿