6
votes

Pourquoi est-ce que j'obtiens AttributeError: le module 'tensorflow' n'a pas d'attribut 'placeholder'?

J'ai pu exécuter mon programme python il y a trois semaines, mais maintenant, chaque fois que j'essaye de l'exécuter, j'obtiens l'erreur suivante:

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

J'ai installé tensorflow (version '2.0.0-alpha0'). J'ai lu quelques articles liés à ce problème. Ils disent que je devrais désinstaller TensorFlow et le réinstaller à nouveau. Le problème est que je l'exécute sur un ordinateur en cluster et que je n'ai pas les autorisations sudo .

Une idée?


2 commentaires

stackoverflow.com/questions/37383812/ ... cela peut aider


@JoeA merci mais ce n'est pas le cas ... Comme je l'ai dit, je le fais à partir d'un cluster


5 Réponses :


6
votes

Dans Tensorflow 2.0, il n'y a pas d'espace réservé. Vous devez mettre à jour votre code TF1.x vers le code TF2.0, puis l'exécuter sur votre cluster. Veuillez consulter la documentation officielle sur la conversion de votre code TF1.x en TF2.0.

Dans les codes TF1.x, vous construisez un graphe tensorflow (graphe statique) avec des espaces réservés, des constantes, des variables. Ensuite, exécutez le code dans une session avec une commande tf.session (). Au cours de cette session, vous fournissez les valeurs de l'espace réservé et exécutez le graphique statique.

Dans TF2.0, les modèles s'exécutent avec impatience lorsque vous entrez des commandes. C'est plus pythonique. Vérifiez plus de détails sur TF 2.0 ici . Merci!


0 commentaires

2
votes

En plus de la réponse de @Vishnuvardhan Janapati, vous pouvez mettre à jour des dossiers ("* TREE") et / ou des fichiers vers la version 2 de TensorFlow. L'outil de mise à niveau tf_upgrade_v2 est automatiquement inclus dans TensorFlow 1.13 et tf_upgrade_v2 ultérieures.

tf_upgrade_v2 [-h] [--infile INPUT_FILE] [--outfile OUTPUT_FILE]
                   [--intree INPUT_TREE] [--outtree OUTPUT_TREE]
                   [--copyotherfiles COPY_OTHER_FILES] [--inplace]
                   [--reportfile REPORT_FILENAME] [--mode {DEFAULT,SAFETY}]
                   [--print_all]

Une illustration de la façon dont la conversion a corrigé l'erreur "d'espace réservé":

entrez la description de l'image ici

Remarque: cela corrige des plaintes similaires. Le module 'tensorflow' has no attribute 'xxxxx' (pas seulement le "placeholder").


0 commentaires

0
votes

Changer la bibliothèque a fonctionné pour moi

`#libraries
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()`

Si cela ne fonctionne pas, vous devrez peut-être réinstaller tensorflow.

J'espère que ça aide


0 commentaires

0
votes

Après avoir inclus les bibliothèques tensorflow compat v1:

X = tf.compat.v1.placeholder(dtype="float",shape=[None, n_H0, n_W0, n_C0])
Y = tf.compat.v1.placeholder(dtype="float",shape=[None, n_y]) 

utilisez la syntaxe v1 comme ceci:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()`


0 commentaires

0
votes

L'appel de la fonction disable_v2_behavior() n'est pas nécessaire

juste,

import tensorflow as tf

tf.compat.v1.placeholder()


0 commentaires