Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@ytooyama

Python 3.7でTensorflow 2.xを動かす

More than 1 year has passed since last update.

前書き

macOSにPython3.7.xをインストールして pip3 install tensorflow したら 2.1系が入りました。ネットで見つけたコードが動かなくて困りました。

Python 3.6.xとTensorflow 1.xのセットアップを行えば元のソースのまま実行できるようですが、せっかくなのでTensorflow 2.xを使ってみたいと思います。

この構成でHello Tensorflowするには?

何も考えずHello Tensorflowしてみる

そして、よくあるコードを tf-hello.py みたいな名前をつけて保存し、実行してみます。

import tensorflow as tf

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

sess = tf.Session()
print(sess.run(hello)) 

すると、次のように表示されるはずです。

$ python3 tf-hello.py
...
Traceback (most recent call last):
  File "tf-hello.py", line 6, in <module>
    sess = tf.Session()
AttributeError: module 'tensorflow' has no attribute 'Session'

Tensorflow 2.xでは、tf.Sessionやtf.placeholderは使わなくなったようです(Migrate your TensorFlow 1 code to TensorFlow 2を参照)。

対策1

次のようにコード修正する方法があります。
ただ出力するなら tf.print が使えるようです。

import tensorflow as tf

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

#sess = tf.Session()
#print(sess.run(hello))

tf.print(hello) 

対策2

次のようにimport行を修正する方法があります。こちらの方法でも動作しますが、いずれ動かなくなるので、対策1の方法の方が良さそうです。

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

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

sess = tf.Session()
print(sess.run(hello)) 

ちなみに

数値も同様に代入したものを出力できます。

$ cat calc.py

import tensorflow as tf

a = tf.constant(1234)
b = tf.constant(5000)
total = a + b
tf.print(total)              

$ python3.7 calc.py
...
2020-02-13 00:34:45.897058: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f9b08d70740 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-02-13 00:34:45.897083: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
6234

以上です。

参考

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ytooyama

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?