TF 1.15 nothing watched by GradientTape()

Hello,

x = tf.constant(3.0)
with tf.GradientTape() as tape:
    tape.watch(x)
    [var.name for var in tape.watched_variables()]

This displays nothing.

Thanks

@Aymeric_Barbin,

For Constants gradients will not be recorded. Instead you should use tf.Variable for the GradientTape to watched.

For example, the following fails to calculate a gradient because the tf.Tensor is not “watched” by default, and the tf.Variable is not trainable:

# A trainable variable
x0 = tf.Variable(3.0, name='x0')
# Not trainable
x1 = tf.Variable(3.0, name='x1', trainable=False)
# Not a Variable: A variable + tensor returns a tensor.
x2 = tf.Variable(2.0, name='x2') + 1.0
# Not a variable
x3 = tf.constant(3.0, name='x3')

with tf.GradientTape() as tape:
  y = (x0**2) + (x1**2) + (x2**2)

grad = tape.gradient(y, [x0, x1, x2, x3])

for g in grad:
  print(g)
Output:
tf.Tensor(6.0, shape=(), dtype=float32)
None
None
None

Note: TF1.x is deprecated, please use 2.x for better compatibility.

Thank you!