Tensorflow не освобождает память после закрытия сессии - PullRequest
0 голосов
/ 29 июня 2018

У меня есть две модели.

Обе модели A и B работают с обучением и тестированием, когда я запускаю их отдельно. Чтобы повысить эффективность обучения двух моделей с одним и тем же набором данных, Я собрал их код запуска.

A.training()
A.close_session() # this closes session with sess.close()
B.training()

у B.training () возникает ошибка исчерпания ресурса!

Так что похоже, что он не освобождает память, когда я делаю sess.close () после A.training (). Эта 'sess' является атрибутом, который есть у A и B отдельно. - это означает, что он используется как self.sess

Это ошибка? Есть ли решение?

.

.

Я гуглил и прочитал некоторые аргументы, и только закрытие сессии не освобождает память gpu. Как я могу освободить память GPU, чтобы следующая модель могла использовать ее?

1 Ответ

0 голосов
/ 03 июля 2018

Tensorflow не нравится вызов нескольких сеансов в одном потоке.

Один из обходных путей - поместить ваши A.training () и B.training () в разные процессы. Вот краткий обзор:

from multiprocessing import Process

def train_func():
        train(
            learning_rate = 0.001
            ...
        )

    p = Process(target=train_func, args=tuple())
    p.start()
    p.join()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...