#python #django #tensorflow #keras
#python #django #тензорный поток #keras
Вопрос:
Я не знаю, как я могу «сохранить» график / сеанс моей модели 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
переменная модуля), который создает экземпляр / создает / компилирует KerasDeepModel
- затем приложение 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
версии я не трогаю его), но это не помогает.