首页 > 解决方案 > 模块 tensorflow 没有属性“get_default_graph”

问题描述

我已经查看了所有相关的问题和答案,我根本无法解决这个问题!我正在尝试为 MNIST 构建一个神经网络,但我随时都会遇到这个错误。还有其他人为此找到了其他帖子中可能没有定义的现代解决方案吗?

我的代码:

from keras import models
from keras import layers

# Construct the model
model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
model.add(layers.Dense(16, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

错误信息:

AttributeError                            Traceback (most recent call last)
<ipython-input-8-2de137c8f569> in <module>
      3 
      4 # Construct the model
----> 5 model = models.Sequential()
      6 model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
      7 model.add(layers.Dense(16, activation='relu'))

~/opt/anaconda3/lib/python3.8/site-packages/keras/engine/sequential.py in __init__(self, layers, name)
     85 
     86     def __init__(self, layers=None, name=None):
---> 87         super(Sequential, self).__init__(name=name)
     88         self._build_input_shape = None
     89 

~/opt/anaconda3/lib/python3.8/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

~/opt/anaconda3/lib/python3.8/site-packages/keras/engine/network.py in __init__(self, *args, **kwargs)
     94         else:
     95             # Subclassed network
---> 96             self._init_subclassed_network(**kwargs)
     97 
     98     def _base_init(self, name=None):

~/opt/anaconda3/lib/python3.8/site-packages/keras/engine/network.py in _init_subclassed_network(self, name)
    292 
    293     def _init_subclassed_network(self, name=None):
--> 294         self._base_init(name=name)
    295         self._is_graph_network = False
    296         self._expects_training_arg = has_arg(self.call, 'training')

~/opt/anaconda3/lib/python3.8/site-packages/keras/engine/network.py in _base_init(self, name)
    107         if not name:
    108             prefix = self.__class__.__name__.lower()
--> 109             name = prefix + '_' + str(K.get_uid(prefix))
    110         self.name = name
    111 

~/opt/anaconda3/lib/python3.8/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'

标签: tensorflowkeras

解决方案


编辑:已经使用了单独的 Keras 前端,看起来它旨在使用 TF1.x 后端。尝试使用 tf.keras 或安装较旧的 TensorFlow 版本(见下文)Keras 和 tf.keras 的区别

您正在使用带有 TF2 框架的 TF1.X 项目。TF2 框架只有兼容版本,还有其他签名。
要使用此项目而不进行更改,请安装 TF1.X

对于 TensorFlow 1.x,CPU 和 GPU 包是分开的:

tensorflow==1.15 —Release for CPU-only
tensorflow-gpu==1.15 —Release with GPU support (Ubuntu and Windows)

推荐阅读