Tensorflow 2.0 - AttributeError: Modul 'Tensorflow' hat kein Attribut 'Session'


118

Wenn ich den Befehl sess = tf.Session()in einer Tensorflow 2.0-Umgebung ausführe , wird folgende Fehlermeldung angezeigt:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'Session'

System Information:

  • Betriebssystemplattform und -verteilung: Windows 10
  • Python-Version: 3.7.1
  • Tensorflow Version: 2.0.0-alpha0 (installiert mit pip)

Schritte zum Reproduzieren:

Installation:

  1. pip install --upgrade pip
  2. pip install tensorflow == 2.0.0-alpha0
  3. Pip Keras installieren
  4. pip install numpy == 1.16.2

Ausführung:

  1. Befehl ausführen: Tensorflow als tf importieren
  2. Befehl ausführen: sess = tf.Session ()

Seltsam. Ich denke, es liegt nicht an der TF-Version, aber die komplette TF-Installation ist kaputt. Siehe github.com/tensorflow/tensorflow/issues/…
Dmytro Prylipko

5
TensorFlow 2.0 arbeitet mit Funktionen, nicht mit Sitzungen . Ich denke, die ursprüngliche Idee war, tf.Sessionzumindest anfangs zu behalten , aber wenn man sich die Dokumente ansieht , scheint es, dass sie endlich vollständig abgekratzt wurden.
Jdehesa

4
Oh, es scheint, Sie können immer noch darauf zugreifen tf.compat.v1.Session.
Jdehesa

@DmytroPrylipko Ich habe es versucht, bevor ich diese Frage erstellt habe. Bei mir hat es nicht funktioniert.
Atul Kamble

Antworten:


204

Laut TF 1:1 Symbols MapTF 2.0 sollten Sie tf.compat.v1.Session()stattdessen anstelle von verwendentf.Session()

https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0

Um TF 1.x-ähnliches Verhalten in TF 2.0 zu erhalten, kann man es ausführen

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

Aber dann kann man nicht von vielen Verbesserungen in TF 2.0 profitieren. Weitere Informationen finden Sie im Migrationshandbuch https://www.tensorflow.org/guide/migrate


5
Die Verwendung import tensorflow.compat.v1 as tf tf.disable_v2_behavior() gibt mir einen FehlerAttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'
GAURAV SRIVASTAVA

1
Gefunden dies in TF 2.0 MigrationsdokumentationIt is still possible to run 1.X code, unmodified (except for contrib), in TensorFlow 2.0
GAURAV SRIVASTAVA

Welche TF-Version verwenden Sie, wenn Sie erhalten, dass tensorflow_corekein Attributfehler vorliegt?
MPękalski

Ich habe ein paar Notizbücher heruntergeladen und war mit diesen Problemen konfrontiert, da mir das Importieren von Anweisungen oben, wie in der Antwort erwähnt, geholfen hat, den irritierenden Fehler zu beseitigen.
Silentsudo

Wie bewerte ich dann den statischen .pbGraphen in TF2? Nur durch Verwendung von tf1-Feature wie tf.compat.v1.Session(). In TF2 solltest du immer den Eifrigen Modus verwenden und nein .pb?
Arty

48

TF2 führt standardmäßig Eager Execution aus, sodass keine Sitzungen erforderlich sind. Wenn Sie statische Diagramme ausführen möchten, ist die Verwendung tf.function()in TF2 am besten geeignet . Obwohl auf die Sitzung tf.compat.v1.Session()in TF2 weiterhin zugegriffen werden kann , würde ich davon abraten, sie zu verwenden. Es kann hilfreich sein, diesen Unterschied durch einen Vergleich des Unterschieds in den Hallo-Welten zu demonstrieren:

TF1.x Hallo Welt:

import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(msg))

TF2.x Hallo Welt:

import tensorflow as tf
msg = tf.constant('Hello, TensorFlow!')
tf.print(msg)

Weitere Informationen finden Sie unter Effektiver TensorFlow 2


1
Gibt es in TF2 einen nicht eifrigen Modus? Oder ist der eifrige Modus nur ein empfohlener Ausführungsmodus? Was ist, wenn ich eine statische .pbDatei in TF2 haben möchte ? Ist es möglich? Wie bewerte ich es dann in TF2?
Arty

27

Ich hatte dieses Problem, als ich Python nach der Installation zum ersten Mal ausprobierte windows10 + python3.7(64bit) + anacconda3 + jupyter notebook.

Ich habe dieses Problem unter " https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html " gelöst.

Ich bin einverstanden mit

Ich glaube, "Session ()" wurde mit TF 2.0 entfernt.

Ich habe zwei Zeilen eingefügt. Einer ist tf.compat.v1.disable_eager_execution()und der andere istsess = tf.compat.v1.Session()

Meine Hello.py lautet wie folgt:

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

hello = tf.constant('Hello, TensorFlow!')

sess = tf.compat.v1.Session()

print(sess.run(hello))

1
Ich würde eher sagen, dass in TF 2.0 Session()verschoben wurde, nicht entfernt. Die Notwendigkeit der Verwendung Session() wurde beseitigt.
MPękalski

3

Denn TF2.xso kannst du es machen.

import tensorflow as tf
with tf.compat.v1.Session() as sess:
    hello = tf.constant('hello world')
    print(sess.run(hello))

>>> b'hello world


3

Versuche dies

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

hello = tf.constant('Hello, TensorFlow!')

sess = tf.compat.v1.Session()

print(sess.run(hello))

Bitte posten Sie keinen einfachen Code als Antwort. Bitte erläutern Sie Ihre Implementierung / Antwort.
Milanbalazs

2

Wenn dies Ihr Code ist, besteht die richtige Lösung darin, ihn so umzuschreiben, dass er nicht verwendet wird Session(), da dies in TensorFlow 2 nicht mehr erforderlich ist

Wenn dies nur Code ist, den Sie ausführen, können Sie durch Ausführen ein Downgrade auf TensorFlow 1 durchführen

pip3 install --upgrade --force-reinstall tensorflow-gpu==1.15.0 

(oder was auch immer die neueste Version von TensorFlow 1 ist)


Danach 1.15.xsollte es keine andere 1.xVersion von TF geben, es sei denn, einige Patches werden kommen, aber keine Verbesserungen.
MPękalski

0

Verwenden von Anaconda + Spyder (Python 3.7)

[Code]

import tensorflow as tf
valor1 = tf.constant(2)
valor2 = tf.constant(3)
type(valor1)
print(valor1)
soma=valor1+valor2
type(soma)
print(soma)
sess = tf.compat.v1.Session()
with sess:
    print(sess.run(soma))

[Konsole]

import tensorflow as tf
valor1 = tf.constant(2)
valor2 = tf.constant(3)
type(valor1)
print(valor1)
soma=valor1+valor2
type(soma)
Tensor("Const_8:0", shape=(), dtype=int32)
Out[18]: tensorflow.python.framework.ops.Tensor

print(soma)
Tensor("add_4:0", shape=(), dtype=int32)

sess = tf.compat.v1.Session()

with sess:
    print(sess.run(soma))
5

0

TF v2.0 unterstützt den Eager-Modus gegenüber dem Graph-Modus von v1.0. Daher wird tf.session () in Version 2.0 nicht unterstützt. Daher empfehlen wir Ihnen, Ihren Code neu zu schreiben, damit er im Eager-Modus funktioniert.


Unterstützt TF2 überhaupt den nicht eifrigen Modus? Oder nicht eifrig ist nur die Funktion tf1? Wie .pbbewerte ich dann Diagramme in tf2?
Arty

0

Die Eager Execution der Tensorflow 2.x-Unterstützung wird standardmäßig unterstützt, daher wird die Sitzung nicht unterstützt.


0
import tensorflow as tf
sess = tf.Session()

Dieser Code zeigt einen Attributfehler in Version 2.x an

Code der Version 1.x in Version 2.x verwenden

Versuche dies

import tensorflow.compat.v1 as tf
sess = tf.Session()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.