Когда я выполняю команду sessions = tf.Session () в среде Tensorflow 2.0, я получаю сообщение об ошибке, как показано ниже:

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

Информация о системе:

  • Платформа и распространение ОС: Windows 10
  • Версия Python: 3.7.1
  • Версия Tensorflow: 2.0.0-alpha0 (устанавливается с помощью pip)

Шаги для воспроизведения:

Установка:

  1. pip install --upgrade pip
  2. pip install tenorflow == 2.0.0-alpha0
  3. pip install keras
  4. pip install numpy == 1.16.2

Исполнение:

  1. Выполнить команду: импортировать тензорный поток как tf
  2. Выполнить команду: sessions = tf.Session ()

Ответы (15)

Согласно TF 1: 1 Symbols Map, в TF 2.0 вы должны использовать tf.compat.v1.Session () вместо tf.Session ()

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

Чтобы получить поведение, подобное TF 1.x, в TF 2.0 можно запустить

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

, но тогда нельзя получить выгоду от многих улучшений, сделанных в TF 2.0. Дополнительные сведения см. В руководстве по миграции. https://www.tensorflow.org/guide/migrate

импортировать tenorflow._api.v2.compat.v1 как tf
tf.disable_v2_behavior ()

Tensorflow 2.x по умолчанию поддерживает Eager Execution, следовательно, сеанс не поддерживается.

TF v2.0 поддерживает режим ожидания по сравнению с режимом Graph версии v1.0. Следовательно, tf.session () не поддерживается в версии 2.0. Следовательно, я предлагаю вам переписать код для работы в режиме ожидания.

Для TF2.xможно сделать так.

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

>>> привет мир

TF2 запускает Eager Execution по умолчанию, что устраняет необходимость в сессиях. Если вы хотите запускать статические графики, более правильным способом является использование tf.function () в TF2. Хотя к сеансу все еще можно получить доступ через tf.compat.v1.Session () в TF2, я бы не рекомендовал его использовать. Может быть полезно продемонстрировать эту разницу, сравнив разницу в hello worlds:

TF1.x привет мир:

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

TF2.x привет мир:

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

Для получения дополнительной информации см. Эффективный TensorFlow 2

Я столкнулся с этой проблемой, когда впервые попробовал python после установки windows10 + python3.7 (64bit) + anacconda3 + jupyter notebook.

Я решил эту проблему, сославшись на "https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html"

Согласен с

Я считаю, что "Session ()" был удален с TF 2.0.

Я вставил две строчки. Один - tf.compat.v1.disable_eager_execution (), а другой - sessions = tf.compat.v1.Session ()

Мой Hello.py выглядит следующим образом:

импортировать тензорный поток как tf

tf.compat.v1.disable_eager_execution ()

hello = tf.constant ('Привет, TensorFlow!')

сесс = tf.compat.v1.Session ()

print (sessions.run (привет))

Та же проблема возникла у меня

import tensorflow as tf
hello = tf.constant('Hello World ') 
sess = tf.compat.v1.Session()    *//I got the error on this step when I used 
                                   tf.Session()*
sess.run(hello)

Попробуйте заменить его на tf.compact.v1.Session ()

используйте это:

sess = tf.compat.v1.Session()

, если есть ошибка, используйте следующий

tf.compat.v1.disable_eager_execution()
sess = tf.compat.v1.Session()

Использование Anaconda + Spyder (Python 3.7)

[код]

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))

[консоль]

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

Я также столкнулся с той же проблемой, когда впервые попробовал Google Colab после обновления Windows 10. Затем я изменил и вставил две строки,

  • tf.compat.v1.disable_eager_execution ()
  • сессия = tf.compat.v1.Session ()

В итоге все ОК

Для Tensorflow 2.0 и новее попробуйте следующее.

импортировать тензорный поток как tf

tf.compat.v1.disable_eager_execution ()

а = tf.constant (5)
b = tf.constant (6)
c = tf.constant (7)
d = tf.multiply (a, b)
е = tf.add (c, d)
f = tf.subtract (a, c)

с tf.compat.v1.Session () в качестве сессии:
  out = sessions.run (f)
  печать (выходы)

Если это ваш код, правильным решением будет его переписать, чтобы не использовать Session (), поскольку в TensorFlow 2

это больше не требуется.

Если это просто код, который вы используете, вы можете перейти на TensorFlow 1, запустив

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

(или как там последняя версия TensorFlow 1)

Если вы делаете это во время импорта, например,

from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np

Затем я предлагаю вам выполнить следующие шаги,
ПРИМЕЧАНИЕ: только для TensorFlow2 и для процесса ЦП
Шаг 1. Укажите своему коду, что он действует так, как если бы компилятор - это TF1, и отключите поведение TF2, используйте следующий код:

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

Шаг 2. При импорте библиотек напомните своему коду, что он должен действовать как TF1, да ВСЕГДА.

tf.disable_v2_behavior()
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np

Заключение: это должно сработать, дайте мне знать, если что-то пойдет не так, также, если это графический процессор, тогда не забудьте добавить внутренний код для keras. Кроме того, TF2 не поддерживает сеансы, для этого есть отдельное понимание и было упомянуто на TensorFlow, ссылка:

Страница TensorFlow для использования сеансов в TF2

Другие важные изменения TF2 были упомянуты в этой ссылке, она длинная, но, пожалуйста, просмотрите ее, используйте Ctrl + F для помощи. Ссылка,

Эффективная ссылка на страницу TensorFlow 2

импортировать тензорный поток как tf
сессия = tf.Session ()

this code will show an Attribute error on version 2.x

для использования кода версии 1.x в версии 2.x

попробуйте это

импортировать tenorflow.compat.v1 как tf
сессия = tf.Session ()

2022 WebDevInsider