手順

Xcode のセットアップ

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

必要なパッケージのインストール

$ brew install automake
$ brew install libtool

TensorFlow

$ git clone https://github.com/tensorflow/tensorflow -b r1.0

Configure

$ cd tensorflow
$ ./configure

いくつか質問聞かれます

iOS 向けの静的ライブラリのビルド

tensorflow/contrib/makefile/build_all_ios.sh

以下のファイルが tensorflow/contrib/makefile/gen/lib/ あたりに作成されれば成功

libtensorflow-core.a, libprotobuf.a, libprotobuf-lite.a

その他ツールのインストール

Bazel を使って以下もインストール、時間かかる もしエラーが出てしまった場合は bazel version でバージョンが 0.1.4 以上か確認する (指定されているオプションがそれより前は存在しないため) 詳細

bazel build tensorflow/python/tools:freeze_graph
bazel build tensorflow/python/tools:optimize_for_inference

だいたいそれぞれかかった時間は以下の通りで、16GBのMacBook Proで50分くらいかかってしまった

Elapsed time: 541.116s, Critical Path: 0.17s
Elapsed time: 2329.343s, Critical Path: 2184.19s

iOS向けGraphファイルの作成

上記の freeze_graph を使って、以前に作った graph.rb ファイルと weight や bias を全て一つのファイルにまとめる

bazel-bin/tensorflow/python/tools/freeze_graph \
--input_graph=../tensorflow_try/tmp/graph.pb --input_checkpoint=../tensorflow_try/tmp/model \
--output_node_names=model/y_pred,inference/inference --input_binary \
--output_graph=/tmp/voice/frozen.pb

ここで中断した…

Overall

Python で作成した TensorFlow のモデルを iOS にインストールすることは可能 だがそこまでするメリットがあまりない 具体的には結構ビルドする手間もかかるし、何よりファイルサイズが大きく アプリのサイズとしては現実的ではない なので素直に全てサーバサイドで Web API として提供するのがストレートだと思う