Kiedy sess = tf.Session()
wykonuję polecenie w środowisku Tensorflow 2.0, pojawia się następujący komunikat o błędzie:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute 'Session'
Informacje o systemie:
- Platforma i dystrybucja systemu operacyjnego: Windows 10
- Wersja Pythona: 3.7.1
- Wersja Tensorflow: 2.0.0-alpha0 (instalowana z pip)
Kroki ku reprodukcji:
Instalacja:
- pip install - uaktualnij pip
- pip zainstaluj tensorflow == 2.0.0-alpha0
- pip install keras
- pip install numpy == 1.16.2
Wykonanie:
- Wykonaj polecenie: importuj tensorflow jako tf
- Wykonaj polecenie: sess = tf.Session ()
python
tensorflow
keras
tensorflow2.0
Atul Kamble
źródło
źródło
tf.Session
przynajmniej początkowo, ale patrząc na dokumenty wydaje się, że w końcu został całkowicie zeskrobany.tf.compat.v1.Session
.Odpowiedzi:
Zgodnie z tym
TF 1:1 Symbols Map
, w TF 2.0 powinieneś używaćtf.compat.v1.Session()
zamiasttf.Session()
https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0
Aby uzyskać TF 1.x podobne zachowanie w TF 2.0, można uruchomić
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
ale wtedy nie można skorzystać z wielu ulepszeń wprowadzonych w TF 2.0. Więcej informacji można znaleźć w przewodniku migracji https://www.tensorflow.org/guide/migrate
źródło
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
daje mi błądAttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'
It is still possible to run 1.X code, unmodified (except for contrib), in TensorFlow 2.0
tensorflow_core
pojawi się błąd nie ma atrybutu?.pb
zatem ocenić statyczny wykres w TF2? Tylko dzięki użyciu funkcji tf1, takiej jaktf.compat.v1.Session()
. W TF2 masz zawsze używać trybu gorącego i nie.pb
?TF2 domyślnie uruchamia Eager Execution, eliminując w ten sposób potrzebę sesji. Jeśli chcesz uruchamiać statyczne wykresy, właściwszym sposobem jest użycie
tf.function()
w TF2. Chociażtf.compat.v1.Session()
w TF2 nadal można uzyskać dostęp do sesji , odradzam jej używanie. Pomocne może być zademonstrowanie tej różnicy, porównując różnicę w światach hello:Witaj świecie TF1.x:
import tensorflow as tf msg = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(msg))
Witaj świecie TF2.x:
import tensorflow as tf msg = tf.constant('Hello, TensorFlow!') tf.print(msg)
Aby uzyskać więcej informacji, zobacz Effective TensorFlow 2
źródło
.pb
plik statyczny w TF2? Czy to możliwe? Jak mam to ocenić w TF2?Napotkałem ten problem, kiedy po raz pierwszy spróbowałem Pythona po instalacji
windows10 + python3.7(64bit) + anacconda3 + jupyter notebook.
Rozwiązałem ten problem, odwołując się do „ https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html ”
zgadzam się z
Wstawiłem dwie linie. Jeden jest,
tf.compat.v1.disable_eager_execution()
a drugi jestsess = tf.compat.v1.Session()
Mój Hello.py wygląda następująco:
import tensorflow as tf tf.compat.v1.disable_eager_execution() hello = tf.constant('Hello, TensorFlow!') sess = tf.compat.v1.Session() print(sess.run(hello))
źródło
Session()
został przeniesiony, a nie usunięty. Konieczność stosowaniaSession()
został usunięty.Bo
TF2.x
możesz to zrobić.import tensorflow as tf with tf.compat.v1.Session() as sess: hello = tf.constant('hello world') print(sess.run(hello))
>>> b'hello world
źródło
Spróbuj tego
import tensorflow as tf tf.compat.v1.disable_eager_execution() hello = tf.constant('Hello, TensorFlow!') sess = tf.compat.v1.Session() print(sess.run(hello))
źródło
Jeśli to jest twój kod, właściwym rozwiązaniem jest przepisanie go tak, aby nie był używany
Session()
, ponieważ nie jest to już konieczne w TensorFlow 2Jeśli to tylko kod, który używasz, możesz przejść na TensorFlow 1, uruchamiając
pip3 install --upgrade --force-reinstall tensorflow-gpu==1.15.0
(lub jakakolwiek najnowsza wersja TensorFlow 1 to)
źródło
1.15.x
nie powinno być żadnej innej1.x
wersji TF, chyba że przyjdą jakieś poprawki, ale żadnych ulepszeń.Domyślnie Tensorflow 2.x obsługuje przyspieszone wykonywanie, dlatego sesja nie jest obsługiwana.
źródło
Korzystanie z Anaconda + Spyder (Python 3.7)
[kod]
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))
[konsola]
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
źródło
TF v2.0 obsługuje tryb Eager vis-a-vis Graph of v1.0. Dlatego tf.session () nie jest obsługiwana w wersji 2.0. Dlatego sugerowałbym przepisanie kodu do pracy w trybie Eager.
źródło
.pb
wykresy w tf2?import tensorflow as tf sess = tf.Session()
ten kod pokaże błąd atrybutu w wersji 2.x
używać kodu wersji 1.x w wersji 2.x
Spróbuj tego
import tensorflow.compat.v1 as tf sess = tf.Session()
źródło