背景
iPhoneアプリで学習モデルを使いたく、CoreMLにしたいのですが、Tensorflowのcheckpoint形式で既存モデルが用意されているため、まず.pb形式にしようと考えました。
やってみたこと⑴
terminal
1ubuntu@ubuntu:~/$ ls 2checkpoint model.meta model.index 3model.data-00000-of-00001
この4つをまとめた.pbファイルにしたく、このサイトの'test.ckpt.meta'などを名前変えて実行してみたところModuleNotFoundError: No module named 'models'
とエラーが出てしまいました。
調べたところここに
It looks like models was renamed to pymodels then renamed again to doqu (source code) which I was able to install the latest version from pypi. Is this legacy code? Will Doqu work for your purposes? `pip install doqu`
と書いてあったのでinstallしたのですがエラーは治りませんでした。なぜでしょうか…
やってみたこと⑵
他のサイトでやってみようと思いここを参考にやってみたらexport_dir/0/直下にsaved_model.pbができたのですが、いざそれをCoreMLにしようとここを参考に変換したら
error
1gdef.ParseFromString(serialized) 2google.protobuf.message.DecodeError: Error parsing message
と出てしまいました…。
saved_model.pbを変換する際
output_feature_names = ['softmax/logits:0'], input_name_shape_dict = {"Mul:0":[1,299,299,3]})
この2つを自分のモデルに合わせて、使った関数('softmax')とinputした形({"conv_n_filters", [16, 32, 64, 128, 256, 512]})を書きましたが、そこが悪かったのでしょうか…。そうならば何を書けばよかったのでしょうか?
###やってみたこと⑶
.pbできないなって思ったので.onnxでやってみようと思い、このサイトを元にコマンドを打ってみたのですが、inputs and outputs are not needed for models in saved-model format.
と書かれているのに要求されます…でも何をinputsに代入すればいいかなどわかりません…
###結論
いろいろやってみたけどダメって感じです…
とにかくCoreMLにできればいいので、いずれかの解決法でも、その他のやり方でも教えてくださると嬉しいです。
どなたかよろしくお願いします。クリスマスにすみません…