学習済のモデルをアプリに組み込んで使おうとしたときに以下のようなエラーが出ることがある。
Cannot interpret feed_dict key as Tensor
これはkerasがスレッドセーフではないために、読み込んだモデルが別のスレッドでは動作しないために発生するエラーである。
解決策として推論の度にモデルを呼び出すのではなく、
事前にモデルを読み込んでコンパイルしておく方法が良いらしい。
以下のようなコードで解決しました。
model = model_from_json(open("~/model.json", 'r').read()) model.load_weights("~/resnet50_model.h5") model._make_predict_function()