如何在Tensorflow 2.0中使用K.get_session或迁移它?

21
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): 当使用TensorFlow 2.0时,get_session不可用。

4个回答

33

5
为了避免在tensorflow 2.0升级后使用get_session,请使用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

可能与默认启用的tf 2.0即时执行有关。 尝试导入tensorflow tf

tf.compat.v1.disable_eager_execution()


1
我已经禁用了急切执行,但我仍然遇到了get_session问题,所以这与它无关。 - cserpell
我认为这与此无关。 - piotrwiercinski

0

我遇到了同样的错误,尝试了安装和卸载。最终,我发现库实际上没有正确安装。

我检查了我的每个库:

C:\Users\MyName\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\

我在Keras的site-packages中追踪到了一个文件,它从Tensorflow库中调用,而Tensorflow库又从另一个文件夹中调用。我发现最终的文件夹中有get_session()函数,但是它没有被调用。当我检查目录时,我发现get_session()没有被加载进来。在文件目录/tensorflow/keras/backend.py中,它导入了所有内容,但却漏掉了get_session()。

为了解决这个问题,我添加了这一行代码:

from tensorflow.python.keras.backend import get_session

然后保存了它。下次运行我的代码时就没问题了。

我为这个页面给出了相同的答案 如何修复“module'keras.backend.tensorflow_backend'没有属性'_is_tf_1'”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接