Python 如何防止每次调用Django中的视图时加载我的Keras模型?

Python 如何防止每次调用Django中的视图时加载我的Keras模型?,python,django,tensorflow,keras,deep-learning,Python,Django,Tensorflow,Keras,Deep Learning,我试图在Django应用程序中使用mobilenet对图像进行分类。我已经使用Keras和Tensorflow后端对我的模型进行了培训,它在不使用Django的情况下工作正常。首先,我尝试在视图函数中使用我的模型,它工作正常,没有任何错误。但是,每次调用此视图时都会加载模型,并且需要花费很多时间才能重新加载。然后我尝试将模型定义为一个全局模型,以便只加载一次权重。我尝试在设置或app.py文件中初始化模型权重,但出现了许多问题。实际上,我尝试在不加载权重的情况下使用模型,但加载权重后,它会给我以

我试图在Django应用程序中使用mobilenet对图像进行分类。我已经使用Keras和Tensorflow后端对我的模型进行了培训,它在不使用Django的情况下工作正常。首先,我尝试在视图函数中使用我的模型,它工作正常,没有任何错误。但是,每次调用此视图时都会加载模型,并且需要花费很多时间才能重新加载。然后我尝试将模型定义为一个全局模型,以便只加载一次权重。我尝试在设置或app.py文件中初始化模型权重,但出现了许多问题。实际上,我尝试在不加载权重的情况下使用模型,但加载权重后,它会给我以下错误: 这是我的代码: 在settings.py中

global model,graph
model = MobileNet(weights=None)
model.load_weights(path)
model._make_predict_function()
graph = tf.get_default_graph()
in views.py

 with graph.as_default():
          model.predict(img)
这就是错误所在

RuntimeError at /classifier/
Attempting to capture an EagerTensor without building a function.
这是添加模型之前的错误。_make_predict_function():

以下是已安装软件包的版本:

Django==3.0.3
Keras==2.3.1
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
numpy==1.18.1
Pillow==7.0.0
scipy==1.4.1
tensorboard==2.1.0
tensorflow-cpu==2.1.0
tensorflow-estimator==2.1.0
还有一件事,我的权重保存为.h5文件。 谢谢

Django==3.0.3
Keras==2.3.1
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.0
numpy==1.18.1
Pillow==7.0.0
scipy==1.4.1
tensorboard==2.1.0
tensorflow-cpu==2.1.0
tensorflow-estimator==2.1.0