Ошибка атрибута: модуль ‘tensorflow’ не имеет атрибута ‘get_default_graph’

#python #tensorflow #machine-learning #keras #conv-neural-network

#python #tensorflow #keras #keras-слой #keras-2

Вопрос:

Я выполняю некоторую задачу, связанную с субтитрами к изображениям, и я загрузил веса начальной модели следующим образом

 model = InceptionV3(weights='imagenet')
 

Но я получаю ошибку, подобную этой:

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

Что мне делать? Пожалуйста, помогите.
Вот полный вывод приведенного выше кода.

1 . ————————————————————————— AttributeError Трассировка (последний последний вызов) в () 1 # Загрузить модель начального уровня v3 —-> 2 model = InceptionV3(include_top=True,веса = ‘imagenet’) 3 # InceptionV3(веса= ‘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'
 

Комментарии:

1. У вас есть файл с именем tensorflow.py в вашей кодовой базе? Как вы установили tensorflow?

2. Используете ли вы tensorflow 2.0? Вы в нетерпеливом режиме?

3. @Vlad спасибо за ответ, но я решил эту проблему после обновления всех пакетов keras, tensorflow и conda.

4. @MatiasValdenegro спасибо за ваш ответ, но я решил эту проблему после обновления всех пакетов keras, tensorflow и conda, и у меня нет файла, вызываемого tensorflow.py

Ответ №1:

Изменить

 Import keras.<something>.<something>
 

Для

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

где «что-то» относится к модулю, который вы хотите импортировать. Это сработало для меня.

Комментарии:

1. я не знаю, работает ответ выше или нет, но я обновил свою среду, и это сработало, я думаю, что возникла проблема, связанная с совместимостью.

2. Работал для меня, используя tensorflow 2

Ответ №2:

Другая причина, из-за которой это происходит, заключается в том, что в tensorflow_backend.py

находится в: lib/ python3.6/site-packages/keras/ backend /

использует tf.compat.v1.get_default_graph для получения графика

вместо tf.get_default_graph.

Заменив это в каталоге, эта проблема может быть успешно решена.

Ответ №3:

Keras интегрирован в TensorFlow 2.0

Приведенная ниже статья прояснила это для меня. Ключевыми моментами являются:

  1. Keras включен в пакет TensorFlow 2.0
  2. Поэтому нет необходимости устанавливать автономный пакет Keras в вашей среде
  3. И теперь вышеупомянутые решения использования «из tensorflow.keras …» имеют смысл.

После распознавания этого и внесения изменений мои примеры кода работают с некоторыми незначительными изменениями здесь и там. https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0 /

Ответ №4:

Я исправил эту проблему, заменив tensorflow.keras.* на tensorflow.python.keras.*

Рабочий пример:

 from tensorflow.python.keras.models import Sequential
 

Ответ №5:

В моем случае замена

из keras.models импортируйте модели

с:

из tensorflow.keras.models импортируйте модели

в моем скрипте исправлена эта проблема.

Ответ №6:

Два шага решили эту проблему для меня в 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/