Я делаю модель для обслуживания с Keras & Django.Цель - инициализация моделей с различными гиперпараметрами или моделями нагрузки, которые имеют одинаковую архитектуру, но весовые коэффициенты (параметры) и гиперпараметры различны. Поскольку весовые значения действительны в каждом сеансе, метод model_init или load_model закрывается и открывается tf.Session () каждый раз, когда он вызывается.
Однако после инициализации новогомоделировать или загружать другие модели, происходит сбой Python и отключение службы Django.Кажется, это связано с сессией и памятью.
Ниже мой код:
class keras_model:
session = None
graph = None
model = None
def model_init(~):
# hyper parameter setting
tf.reset_default_graph()
self.graph = None
if self.session is not None:
self.session.close()
# del self.session
self.session = None
self.graph = tf.Graph()
with self.graph.as_default():
self.session = tf.Session(graph=self.graph)
with self.session.as_default():
# model definition
self.model = models.Model(~)
self.model.compile(~)
def train():
with tf.device(self.device):
with self.graph.as_default():
with self.session.as_default():
training_log = self.model.fit(~)
return training_log
def predict():
~
def load_model():
tf.reset_default_graph()
self.graph = None
if self.session is not None:
self.session.close()
self.session = None
self.graph = tf.Graph()
with self.graph.as_default():
self.session = tf.Session(graph=self.graph)
with self.session.as_default():
# load model architecture
self.model = model_from_json(~)
# load model weight
self.model.load_weights(~)
def save_model():
~
Любая идея или предложение будет оценено.