Как использовать K.get_session в Tensorflow 2.0 или как его перенести? - PullRequest
2 голосов
/ 06 октября 2019
def __init__(self, **kwargs):
    self.__dict__.update(self._defaults) # set up default values
    self.__dict__.update(kwargs) # and update with user overrides
    self.class_names = self._get_class()
    self.anchors = self._get_anchors()
    self.sess = K.get_session()

RuntimeError: get_session недоступно при использовании TensorFlow 2.0.

Ответы [ 3 ]

4 голосов
/ 18 октября 2019

Tensorflow 2.0 больше не предоставляет доступ непосредственно к backend.get_session, но код все еще там и предоставляет для tf1.

https://github.com/tensorflow/tensorflow/blob/r2.0/tensorflow/python/keras/backend.py#L465

Вы можете использовать его с интерфейсом, совместимым с tf1:

sess = tf.compat.v1.keras.backend.get_session()

Или импортировать серверную часть tenforflow с внутренним путем:

import tensorflow.python.keras.backend as K
sess = K.get_session()
0 голосов
/ 24 октября 2019

Чтобы не использовать get_session после обновления tenorflow 2.0, используйте tf.distribute.Strategy, чтобы получить модель. Чтобы загрузить модель, используйте tf.keras.models.load_model

import tensorflow as tf

another_strategy = tf.distribute.MirroredStrategy()
with another_strategy.scope():
    model = Service.load_deep_model()

def load_deep_model(self, model):
    loaded_model = tf.keras.models.load_model("model.h5")
    return loaded_model

Надеюсь, это поможет. Поскольку это сработало для меня.

Я попытался объяснить то же самое в этой служебной статье. https://www.javacodemonk.com/runtimeerror-get_session-is-not-available-when-using-tensorflow-2-0-f7238546

0 голосов
/ 06 октября 2019

Скорее всего, это связано с энергичным выполнением tf 2.0, которое включено по умолчанию. Попробуйте импортировать тензор потока как tf

tf.compat.v1.disable_eager_execution ()

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