v-crn Code Log

主に備忘録

TensorFlow 2.0.0へのアップデートで出くわしたエラー:AttributeError: module 'tensorflow' has no attribute 'placeholder'

前提

  • TensorFlow 2.0.0

エラー内容

TensorFlow 1.4.0で書かれたコード

g = tf.Graph()
with g.as_default():
    x = tf.placeholder(dtype=tf.float32,
                       shape=(None), name='x')
    w = tf.Variable(2.0, name='weight')
    b = tf.Variable(0.7, name='bias')

    z = w*x + b
    init = tf.global_variables_initializer()

を実行すると次のエラーが出た.

AttributeError: module 'tensorflow' has no attribute 'placeholder'

原因はバージョンアップに伴う変更の影響だった.

解決策

エラーの原因となっているメソッドの前に tensorflow.compat.v1 をつけることで解決した.(もちろん as tf でimportしているならtf.compat.v1

g = tf.Graph()
with g.as_default():
    x = tf.compat.v1.placeholder(dtype=tf.float32,
                       shape=(None), name='x')
    w = tf.Variable(2.0, name='weight')
    b = tf.Variable(0.7, name='bias')

    z = w*x + b
    init = tf.compat.v1.global_variables_initializer()