9

I am trying to run this line of code :

var_init_1 = tf.get_variable("var_init_1", [1, 2], dtype=tf.int32,  initializer=tf.zeros_initializer)
print(var_init_1.shape)

It should give an output the shape of tensor of zeros.

But why I'm getting an error like this:

AttributeError                            Traceback (most recent call last)
<ipython-input-37-3cc73aa1818e> in <module>
----> 1 var_init_1 = tf.get_variable("var_init_1", [1, 2], dtype=tf.int32,  initializer=tf.zeros_initializer)
      2 print(var_init_1.shape)

AttributeError: module 'tensorflow' has no attribute 'get_variable'
aksr
  • 322
  • 1
  • 2
  • 11

4 Answers4

14

Replace tf.get_variable with tf.Variable.

HajarM
  • 331
  • 5
  • 14
  • (which NB has different argument syntax) – jtlz2 Apr 08 '20 at 11:46
  • This is not working for me. Not sure why it's accepted answer. Another method worked by converting v1 to v2: tf_upgrade_v2 \ --intree my_project/ \ --outtree my_project_v2/ \ --reportfile report.txt – us_david Mar 14 '23 at 03:28
3

Mentioning the Solution for the benefit of the community.

Downgrading to Tensorflow 1.X Version (1.14 or 1.15) has resolved the issue, as Tensorflow version 2.0 doesn't support get_variable().

3

tf.Variable does not work for initilizer. Use this instead of tf.compat.v1.get_variable instead of tf.Variable. This works tensorflow 2.0 and above.

Nafees Ahmed
  • 93
  • 12
0

I ran into this problem and other issue with tf v1 vs. tf v2. I found the best solution is proposed at this overstock link: Module 'tensorflow' has no attribute 'contrib'

$tf_upgrade_v2 \
--intree my_project/ \
--outtree my_project_v2/ \
--reportfile report.txt

Basically you just convert tf v1 project to tf v2. Most of the time it will work. You do need to inspect get_variable conversion and make sure it's what you want. Examine report.txt on how it's converted.

us_david
  • 4,431
  • 35
  • 29