web-dev-qa-db-fra.com

AttributeError: l'objet 'module' n'a pas d'attribut 'merge_all_summaries'

Ubuntu 14.04. 

Python 2.7.13 :: Anaconda custom (64-bit)

J'ai installé Tensorflow suivre le tutoriel: https://www.tensorflow.org/install/

quand j'entre 

~/anaconda2/lib/python2.7/sites-packages/tensorflow/examples/tutorials/mnist

et essayez d’exécuter le fichier python existant:

fully_connected_feed.py

J'ai rencontré le ci-dessous AttributeError :

:~/anaconda2/lib/python2.7/site-packages/tensorflow/examples/tutorials/mnist$ python fully_connected_feed.py 
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally
Extracting Mnist_data/train-images-idx3-ubyte.gz
Extracting Mnist_data/train-labels-idx1-ubyte.gz
Extracting Mnist_data/t10k-images-idx3-ubyte.gz
Extracting Mnist_data/t10k-labels-idx1-ubyte.gz
Traceback (most recent call last):
  File "fully_connected_feed.py", line 229, in <module>
    tf.app.run()
  File "/home/hok/anaconda2/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 44, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "fully_connected_feed.py", line 225, in main
    run_training()
  File "fully_connected_feed.py", line 154, in run_training
    summary_op = tf.merge_all_summaries()
AttributeError: 'module' object has no attribute 'merge_all_summaries'

Mais le même code est exécuté avec succès sur un autre ordinateur. Je pense donc que cela doit être le problème de configuration de mon ordinateur.

J'ai suivi les mêmes étapes pour installer tensorflow plusieurs fois et l'utiliser pour exécuter Deep Learning pendant un certain temps. Mais c’était la première fois que je rencontrais un tel problème.

Il y a beaucoup de suggestions dans Google qui indiquent un tel type d'attributErreur, peut-être le problème avec version python. Mais ce n'est pas.

4
123

J'ai résolu ce problème avec l'aide de mes coéquipiers.

Ce sont les versions de tensorflow problem.

La version de Tensorflow sur l'ancien ordinateur est 0.12.1 . La version de Tensorflow sur l'ordinateur rencontré AttributeError est 1.0.0 . Cette nouvelle version de tensorflow a modifié certains Python api , donc la valeur AttributeError a été atteinte.


Sur cet ordinateur qui a rencontré AttributeError:

:~$ python
Python 2.7.13 |Anaconda custom (64-bit)| (default, Dec 20 2016, 23:09:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally
>>> __tf.version__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name '__tf' is not defined
>>> tf.__version__
'1.0.0'
>>> 

Dans l'ancien ordinateur:

:~$ python
Python 2.7.13 |Anaconda 2.4.1 (64-bit)| (default, Dec 20 2016, 23:09:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
>>> tf.__version__
'0.12.1'
>>> 
2
123

Dans https://stackoverflow.com/a/40066895/4533188 , vous pouvez obtenir une réponse à la question concernant un problème similaire: La solution consiste à effectuer une migration appropriée. Découvrez https://www.tensorflow.org/install/migration . Là vous voyez ça

- tf.merge_summary
    - should be renamed to tf.summary.merge
- tf.train.SummaryWriter
    - should be renamed to tf.summary.FileWriter

(En fait, SummaryWriter a également été modifié.) Vous devriez donc pouvoir résoudre votre problème si vous écrivez avant votre code.

import tensorflow as tf
tf.merge_all_summaries = tf.summary.merge_all
tf.train.SummaryWriter = tf.summary.FileWriter

(J'ai eu le même problème dans Keras + TensorFlow: “le module 'tensorflow' n'a pas d'attribut 'merge_all_summaries' '” .)

4
Make42

Vous devez mettre à jour l'API Tensorflow détaillée dans les fichiers Python que vous exécutez.

Recherchez tf.merge_all_summaries () et remplacez-le par tf.summary.merge_all ()

La version actuelle de Tensorflow utilise 

tf.summary.merge_all()

au lieu de l'ancienne version qui utilisait

tf.merge_all_summaries()
0