AttributeError:模块“ tensorflow”没有属性“ get_default_graph”

时间:2019-03-19 08:03:01

标签: python tensorflow keras keras-layer keras-2

我正在执行一些与图像字幕相关的任务,并且已经加载了初始模型的权重

model = InceptionV3(weights='imagenet')

但是我收到这样的错误:

AttributeError: module 'tensorflow' has no attribute 'get_default_graph'

我该怎么办?请帮忙。 这是上面代码的完整输出。

1。 -------------------------------------------------- ------------------------- AttributeError追溯(最新     最后呼叫)()           1#加载初始v3模型     ----> 2个模型= InceptionV3(include_top = True,weights ='imagenet')           3#InceptionV3(weights ='imagenet')

~/anaconda3/lib/python3.6/site-packages/keras/applications/__init__.py
in wrapper(*args, **kwargs)
     26             kwargs['models'] = models
     27             kwargs['utils'] = utils
---> 28         return base_fun(*args, **kwargs)
     29 
     30     return wrapper

~/anaconda3/lib/python3.6/site-packages/keras/applications/inception_v3.py
in InceptionV3(*args, **kwargs)
      9 @keras_modules_injection
     10 def InceptionV3(*args, **kwargs):
---> 11     return inception_v3.InceptionV3(*args, **kwargs)
     12 
     13 

~/anaconda3/lib/python3.6/site-packages/keras_applications/inception_v3.py
in InceptionV3(include_top, weights, input_tensor, input_shape,
pooling, classes, **kwargs)
    155 
    156     if input_tensor is None:
--> 157         img_input = layers.Input(shape=input_shape)
    158     else:
    159         if not backend.is_keras_tensor(input_tensor):

~/anaconda3/lib/python3.6/site-packages/keras/engine/input_layer.py
in Input(shape, batch_shape, name, dtype, sparse, tensor)
    176                              name=name, dtype=dtype,
    177                              sparse=sparse,
--> 178                              input_tensor=tensor)
    179     # Return tensor including _keras_shape and _keras_history.
    180     # Note that in this case train_output and test_output are the same pointer.

~/anaconda3/lib/python3.6/site-packages/keras/legacy/interfaces.py
in wrapper(*args, **kwargs)
     89                 warnings.warn('Update your `' + object_name + '` call to the ' +
     90                               'Keras 2 API: ' + signature, stacklevel=2)
---> 91             return func(*args, **kwargs)
     92         wrapper._original_function = func
     93         return wrapper

~/anaconda3/lib/python3.6/site-packages/keras/engine/input_layer.py
in __init__(self, input_shape, batch_size, batch_input_shape, dtype,
input_tensor, sparse, name)
     37         if not name:
     38             prefix = 'input'
---> 39             name = prefix + '_' + str(K.get_uid(prefix))
     40         super(InputLayer, self).__init__(dtype=dtype, name=name)
     41 

~/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py
in get_uid(prefix)
     72     """
     73     global _GRAPH_UID_DICTS
---> 74     graph = tf.get_default_graph()
     75     if graph not in _GRAPH_UID_DICTS:
     76         _GRAPH_UID_DICTS[graph] = defaultdict(int)

AttributeError: module 'tensorflow' has no attribute
'get_default_graph'

6 个答案:

答案 0 :(得分:4)

更改

Import keras.<something>.<something>

Import tensorflow.keras.<something>.<something>

其中“某物”是指您要导入的模块。它对我有用。

答案 1 :(得分:1)

发生这种情况的另一个原因是 tensorflow_backend.py

位于: lib / python3.6 / site-packages / keras / backend /

使用 tf.compat.v1.get_default_graph 获取图

代替 tf.get_default_graph

通过在目录中替换它可以成功解决此问题。

答案 2 :(得分:0)

就我而言,替换

从keras.models导入模型

具有:

从tensorflow.keras.models导入模型

在我的脚本中,解决了此问题。

答案 3 :(得分:0)

Keras已集成到TensorFlow 2.0中

下面的文章为我解决了这个问题。关键点是:

  1. Keras包含在TensorFlow 2.0软件包中
  2. 因此无需在您的环境中安装独立的Keras软件包
  3. 现在使用“ from tensorflow.keras ...”的上述解决方案很有意义。

识别并进行更改后,我的代码示例在此处和此处进行了一些小的更改。 https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0/

答案 4 :(得分:0)

我通过将 tensorflow.keras 。*替换为 tensorflow.python.keras 。*

来解决此问题。

工作示例:

from tensorflow.python.keras.models import Sequential

答案 5 :(得分:0)

Two Steps 在 Google Colabs 中为我解决了这个问题

第一步

改变

从 keras.something 导入东西

从 tensorflow.keras.something 导入一些东西

第二步

使用

tf.compat.v1.get_default_graph

代替 tf.get_default_graph

原因

https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0/