Сбой Python при закрытии и открытие нового сеанса Keras (тензор потока) - PullRequest
0 голосов
/ 26 сентября 2019

Я делаю модель для обслуживания с 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():
        ~

Любая идея или предложение будет оценено.

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