

django中でtensorflowを使っているwebアプリケーションを作っているのですが、入力されてきたデータに対して学習済みモデルがforward処理を実行をするとき、毎回モデルの構築と学習済みパラメータのロードを行なっているため、処理に時間がかかってしまいます。可能ならば、アプリケーションが立ち上がった時にモデルの構築と学習済みパラメータのロードを行い、forward処理を実行する時に毎回モデル構築を行わないようにしたいです。下に私の簡易的なコードを記述します。ちなみに、djangoのviews.pyで自分で定義した処理を行う関数をimportしています。

views.py

[code]

    from main import main #it is the function that deal the image data
    
    class Example(Formview):
        def form_valid(self, form):
            image = form.data
            output = main(image)
            return JsonResponse(output)
    
[/code]

main.py

[code]

    def main(input):
        with tf.Graph().as_default():
    
            with tf.Session() as sess:
    
                # load model and parameters
                net.load_model(model)
                # deal the image data
                output = net(input)
    
                return output
    
[/code]


CC BY-SA 4.0
2018-09-07T06:17:26.750
48172
2022-02-20T23:07:00.693
2018-09-07T11:37:37.183
3054
30020
question
python django tensorflow
tensorflowをdjangoで用いる際に、一度構築、ロードしたモデルをアプリ起動中にずっと使えるようにしたいです。


Django起動時に一度だけ処理を実行したいと言うことであれば、`AppConfig.ready()`メソッドをオーバーライドすればいいようです（バージョン1.7以降）。それ以前のバージョンでの対応方法などについての詳細は、次のページが参考になると思います。

[Execute code when Django starts ONCE
only?](https://stackoverflow.com/questions/6791911/execute-code-when-django-
starts-once-only)


CC BY-SA 4.0
2018-09-26T05:03:04.327
48715
2018-09-26T05:03:04.327
21092
48172
answer