tf-coremlでモデルの変換
LSTM等のRNNを含むネットワークをpbファイルからcoreMLに変換しようとすると
ValueError: Graph has cycles.
と言われます。
これはRNNのような形のネットワークをcoreMLが対応していないかららしいです。しかし、純粋なネットワークで構成するRNNではなく、coreMLが用意しているRNN用のレイヤーを利用すれば同様の形のネットワークが構築できるようなのですが、要するにそれってcoreMLでモデルをゴリゴリ記述して、Tensorflowで学習した重みを全てcoreML上で適用してねって事みたいです。
参考: https://github.com/tf-coreml/tf-coreml/issues/124
これは辛い…
CaffeやKerasから変換のできるcoremltoolsではこのようなエラーは出なかったので多分そっちではある程度互換性があってそれぞれのレイヤーを利用している感じなのかな。