Help us understand the problem. What is going on with this article?

Kerasにおける"_make_predict_function()"の重要性

More than 1 year has passed since last update.

背景

  • Kerasでモデルを作った際(modelという変数としよう)、公式ドキュメントでは、推論するときにmodel.predict関数を使えばいい、としている。
  • その中で、実はmodelクラスには_make_predict_functionというものが存在している。この関数は、推論前に以下のようにして実行できる。これは何なのか?と思い調べたら、めちゃくちゃ重要だった。
model._make_predict_function()

_make_predict_function()の意味

  • 普通モデルが実行されるとき、「GPU上でのモデルのビルドとコンパイル」そして「実行」という2段階の処理が行われる。
  • 以下のページの議論によると、 実は普通にmodel.predict()をいきなり呼ぶと、この2段階の処理が毎回実行されて、めちゃくちゃ遅くなっている のだという。
  • そこで、 _make_predict_function()を先に実行しておくと、predictするときに「GPU上でのモデルのビルドとコンパイル」が行われず、単に「実行」だけできるようになり、処理が高速化される らしい。
  • しかも、公式ドキュメントには載っていないらしい笑

まとめ

  • 単純にpredictを使っていると、pythonプログラムによってはエラーで落ちてしまい、実行できなくなったりするので、要注意!
    • 私の場合は、ROSから画像データを読み込んで画像認識するpythonプロラムで以下のようなエラーがでましたが、_make_predict_function()を使うことでエラーがでなくなりました。
ValueError: Tensor Tensor("0_conv_1x1_parts/BiasAdd:0", shape=(?, 80, 60, 8), dtype=float32) is not an element of this graph.
  • Kerasでの推論プログラムでは、_make_predict_function()を使いましょう!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした