Tensorflow 2.0-AttributeError:モジュール 'tensorflow'には属性 'Session'がありません


131

sess = tf.Session()Tensorflow 2.0環境でコマンドを実行すると、次のようなエラーメッセージが表示されます。

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

システムインフォメーション:

  • OSプラットフォームとディストリビューション:Windows 10
  • Pythonバージョン:3.7.1
  • Tensorflowバージョン:2.0.0-alpha0(pipとともにインストール)

再現する手順:

インストール:

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

実行:

  1. コマンドを実行します:tensorflowをtfとしてインポートします
  2. コマンドを実行します:sess = tf.Session()

奇妙な。TFバージョンによるものではないと思いますが、完全なTFインストールが壊れています。github.com/tensorflow/tensorflow/issues/…を
DmytroPrylipko19年

5
TensorFlow 2.0は、セッションではなく関数を回避します。最初のアイデアはtf.Session少なくとも最初は維持することだったと思いますが、ドキュメントを見るとようやく完全に削られたようです。
jdehesa

4
ああ、まだアクセスできるようですtf.compat.v1.Session
jdehesa

@DmytroPrylipkoこの質問を作成する前に試してみました。それは私にはうまくいきませんでした。
AtulKamble19年

回答:


222

によるとTF 1:1 Symbols Map、TF 2.0tf.compat.v1.Session()では、代わりにを使用する必要がありますtf.Session()

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

TF2.0でTF1.xのような動作を取得するには、次のコマンドを実行できます。

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

しかし、TF2.0で行われた多くの改善の恩恵を受けることはできません。詳細については、移行ガイドhttps://www.tensorflow.org/guide/migrateを参照して ください。


5
使用 import tensorflow.compat.v1 as tf tf.disable_v2_behavior() するとエラーが発生しますAttributeError: module 'tensorflow_core.compat.v1' has no attribute 'contrib'
GAURAVSRIVASTAVA19年

1
これはIt is still possible to run 1.X code, unmodified (except for contrib), in TensorFlow 2.0
TF2.0

tensorflow_core属性エラーがない場合、どのTFバージョンを使用していますか?
MPękalski

私はいくつかのノートブックをダウンロードしましたが、回答に記載されているように上部にステートメントをインポートすることでこれらの問題に直面し、苛立たしいエラーを取り除くことができました。
サイレントスド

.pbでは、TF2で静的グラフを評価するにはどうすればよいですか?のようなtf1-featureを使用することによってのみtf.compat.v1.Session()。TF2では、常にイーガーモードを使用することになっていますが、そうではありません.pbか?
Arty 2010

53

TF2はデフォルトでEagerExecutionを実行するため、Sessionsは不要です。静的グラフを実行する場合tf.function()は、TF2で使用するのがより適切な方法です。セッションはtf.compat.v1.Session()TF2を介して引き続きアクセスできますが、使用しないことをお勧めします。hello worldの違いを比較することで、この違いを示すことが役立つ場合があります。

TF1.x hello world:

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

TF2.x hello world:

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

詳細については、Effective TensorFlow2をご覧ください。


1
TF2に非熱心なモードはありますか?または、イーガーモードは推奨される実行モードのみです。.pbTF2に静的ファイルが必要な場合はどうなりますか?出来ますか?TF2でそれを評価するにはどうすればよいですか?
Arty 2010

28

インストール後に最初にPythonを試したときにこの問題に直面しました windows10 + python3.7(64bit) + anacconda3 + jupyter notebook.

https://vispud.blogspot.com/2019/05/tensorflow200a0-attributeerror-module.html」を参照してこの問題を解決しました

同意する

「Session()」はTF2.0で削除されたと思います。

2行挿入しました。1つはでtf.compat.v1.disable_eager_execution()、もう1つはsess = tf.compat.v1.Session()

私のHello.pyは次のとおりです。

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
むしろ、TF2.0ではSession()削除されずに移動されたと言いたいです。使用する必要 Session()がなくなりました。
MPękalski

5

の場合TF2.x、このようにすることができます。

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

>>> b'hello world


4

これを試して

import tensorflow as tf

tf.compat.v1.disable_eager_execution()

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

sess = tf.compat.v1.Session()

print(sess.run(hello))

答えとして単純なコードを投稿しないでください。実装/回答を説明してください。
milanbalazs

3

これがコードの場合、正しい解決策は、を使用しないように書き直すことです。これはSession()、TensorFlow2では不要になったためです。

これが実行中のコードだけの場合は、実行することでTensorFlow1にダウングレードできます

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

(またはTensorFlow 1の最新バージョンが何であれ)


1.15.xそこには他あってはならない1.xいくつかのパッチが来る場合を除き、TFのバージョンが、ない改善。
MPękalski

1

Tensorflow 2.xはデフォルトでEager Executionをサポートしているため、Sessionはサポートされていません。


0

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

0

TF v2.0は、v1.0のグラフモードに対してイーガーモードをサポートします。したがって、tf.session()はv2.0ではサポートされていません。したがって、Eagerモードで動作するようにコードを書き直すことをお勧めします。


TF2は非イーガーモードをまったくサポートしていますか?または、熱心でないのはtf1機能だけですか?.pbでは、tf2のグラフを評価するにはどうすればよいですか?
Arty 2010

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

このコードは、バージョン2.xで属性エラーを表示します

バージョン2.xでバージョン1.xコードを使用するには

これを試して

import tensorflow.compat.v1 as tf
sess = tf.Session()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.