Search code examples
pythontensorflowtflearn

AttributeError: 'Tensor' object has no attribute 'initialized_value'


Here's my code https://gist.github.com/Wermarter/318756a2f4cda35ebb178a932e1f8c38

I'm trying to implement VAE with TFLearn but the compiler said:

Traceback (most recent call last):
  File "/home/wermarter/Desktop/ChienVAE_RawTF.py", line 107, in <module>
    main()
  File "/home/wermarter/Desktop/ChienVAE_RawTF.py", line 101, in main
    vae = VAE()
  File "/home/wermarter/Desktop/ChienVAE_RawTF.py", line 26, in __init__
    self._build_graph()
  File "/home/wermarter/Desktop/ChienVAE_RawTF.py", line 67, in _build_graph
    self.training_model = tflearn.Trainer(train_ops=trainop, tensorboard_dir=TENSORBOARD_DIR)
  File "/home/wermarter/anaconda3/lib/python3.5/site-packages/tflearn/helpers/trainer.py", line 131, in __init__
    clip_gradients)
  File "/home/wermarter/anaconda3/lib/python3.5/site-packages/tflearn/helpers/trainer.py", line 651, in initialize_training_ops
    ema_num_updates=self.training_steps)
  File "/home/wermarter/anaconda3/lib/python3.5/site-packages/tflearn/summaries.py", line 239, in add_loss_summaries
    loss_averages_op = loss_averages.apply([loss] + other_losses)
  File "/home/wermarter/anaconda3/lib/python3.5/site-packages/tensorflow/python/training/moving_averages.py", line 375, in apply
    colocate_with_primary=(var.op.type in ["Variable", "VariableV2"]))
  File "/home/wermarter/anaconda3/lib/python3.5/site-packages/tensorflow/python/training/slot_creator.py", line 169, in create_zeros_slot
    else array_ops.shape(primary.initialized_value()))
AttributeError: 'Tensor' object has no attribute 'initialized_value'

I've tried running some examples on github and they worked fine, I think this is not about bugs in Tensorflow or TFlearn


Solution

  • The error above is somewhat vague in TF 1.2.0 but in TF 1.0.1 it is much clearer

    ValueError: Cannot convert a partially known TensorShape to a Tensor: (?, 784)

    This is a problem with my tf.random_normal where TF cannot understand the input shape (the batch size is not specify). So I dealt with this problem by create another number:

    batch_size = tf.shape(z_mean)[0]

    eps = tf.random_normal((batch_size, self.latent_dim))

    instead of:

    eps = tf.random_normal(tf.shape(z_mean)) <==== Error

    I tested this non-error version with TF 1.2.0 and it worked great https://gist.github.com/Wermarter/9e0e29ee80adaa0f7af17b72d8e58a67

    Click to see the result of 2D MNIST latent space