I'm trying to learn how to build a graph in TensorFlow, but got stuck in a seemingly trivial operation. This is what I have,
import tensorflow as tf
def loss(x, y):
tf.reduce_mean(tf.square(x - y))
xx = tf.random_normal([])
noise = tf.random_normal([])
yy = 3 * xx + 2 + noise
W = tf.get_variable("W", [])
W.assign(5)
b = tf.get_variable("b", [])
b.assign(0)
with tf.GradientTape() as t:
current_loss = loss(W*xx+b, yy)
dW = t.gradient(current_loss, W)
At this point I got an AttributeError, as follows
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-26d05a240ccc> in <module>()
1 with tf.GradientTape() as t:
2 current_loss = loss(W*xx+b, yy)
----> 3 dW = t.gradient(current_loss, W)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/backprop.py in gradient(self, target, sources, output_gradients, unconnected_gradients)
944 flat_sources,
945 output_gradients=output_gradients,
--> 946 unconnected_gradients=unconnected_gradients)
947
948 if not self._persistent:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/imperative_grad.py in imperative_grad(tape, target, sources, output_gradients, unconnected_gradients)
70 sources,
71 output_gradients,
---> 72 compat.as_str(unconnected_gradients.value))
AttributeError: 'NoneType' object has no attribute '_id'
What am I doing wrong and how do I get the gradient? Thanks in advance.