Последовательная модель Keras в Django - сохранить сеанс? - PullRequest
1 голос
/ 19 марта 2019

Я не знаю, как я могу "сохранить" график / сеанс моей модели Keras в приложении Django, которое работает как сервер.

Я собрал последовательную модель Keras DeepModel, которая прекрасно работает как отдельный модуль Python. Но теперь я хочу встроить его в приложение Django, где я определил следующий обработчик для модели:

# instantiated by Django app
class DeepModelManager:

def __init__(self, params):

    self.graph = tf.Graph()
    self.sess = tf.Session()
    K.set_session(self.sess)
    with self.sess.as_default():
        self.instance = DeepModel(params)
        self.model = self.instance.build()

        optimizer = Adam()
        loss = "categorical_crossentropy"
        metrics = ["accuracy"]
        self.model.compile(loss=loss, optimizer=optimizer, metrics=metrics)

def train(self):
    X = ...
    y = ...

    K.set_session(self.sess)
    with self.sess.as_default():
        H = self.model.fit(X, y, epochs=20)

Процесс работает следующим образом:

  • сначала приложение Django ожидает запрос инициализации от внешнего клиента, затем оно создает экземпляр DeepModelManager (в виде переменной модуля views), который создает / компилирует / компилирует Keras DeepModel
  • тогда приложение Django ожидает запрос поезда, который должен вызвать вышеуказанную функцию train, то есть подгонка модели

Но когда запускается метод train, я постоянно получаю сообщение об ошибке

ValueError: Tensor("training/Adam/Const:0", shape=(), dtype=float32) must be from the same graph as Tensor("sub:0", shape=(), dtype=float32).

, что я подозреваю, связано с тем, что сеанс TensorFlow (или график) каким-то образом очищается между инициализацией модели и обучением. Вот почему я пытался играть с tf.Session() и tf.Graph() (в автономной версии DeepModel я не трогал его), но это не помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...