Как эффективно использовать Session из объекта Python, чтобы сохранить тензорный поток в качестве детали реализации? - PullRequest
0 голосов
/ 12 мая 2018

Я реализую пользовательский Sklearn Transformer, который требует шага оптимизации, который был закодирован в Tensorflow. TF требует Session, который должен использоваться как менеджер контекста или явно закрыт. Вопрос в том, что добавление метода close() в Transformer было бы странным (и неожиданным для пользователя). Как лучше всего закрыть сеанс? Должен ли я открывать и закрывать новый сеанс для каждого звонка на fit()? Или я должен держать его открытым и оставить метод session.close() для __del__ трансформатора? Любые другие варианты?

1 Ответ

0 голосов
/ 14 мая 2018

Не открывайте сеанс при каждом вызове функции, что может быть очень неэффективно, если функция вызывается много раз.

Если по какой-то причине вы не хотите открывать менеджер контекста, тогдавам нужно открыть сессию самостоятельно и оставить ее открытой.Возможно, это немного проще для пользователя, но совместное использование tf.Session с другими объектами или библиотеками может быть более сложным.Также попытка скрыть тот факт, что вы используете tenorflow, может быть немного тщетной, поскольку она потенциально несовместима с другими библиотеками, также использующими графический процессор.(Кроме того, пользователю потребуется установить tenorflow для использования библиотеки, он / она определенно узнает, что вы ее используете).

Поэтому я бы не стал пытаться инкапсулировать вещи, которые могут 't или не должен (по моему мнению) и использовать диспетчер контекста для tf.Session (может быть, даже используя непосредственно tf.Session, если не возражаю против раскрытия тензорного потока, в противном случае оборачиваю его в моем собственном диспетчере контекста).

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