Градиент выражения в TensorFlow
После вычисления выражения внутри
ленты GradientTape производную
считывают методом gradient.
Первым аргументом идёт результат
формулы, вторым - переменная,
по которой нужна производная.
Лента здесь только записывает
шаги и отдаёт градиент, без
обновления весов.
Создадим переменную x,
посчитаем y = x * x
и выведем градиент y
по x:
import tensorflow as tf
x = tf.Variable(3.0)
with tf.GradientTape() as tape:
y = x * x
grad = tape.gradient(y, x)
print(grad) # выведет tf.Tensor(6.0, shape=(), dtype=float32)
Тот же приём работает для ряда: каждый элемент обрабатывается отдельно. Возьмём переменную из трёх чисел и квадрат каждого:
import tensorflow as tf
x = tf.Variable([1.0, 2.0, 3.0])
with tf.GradientTape() as tape:
y = x * x
grad = tape.gradient(y, x)
print(grad) # выведет tf.Tensor([2. 4. 6.], shape=(3,), dtype=float32)
Создайте переменную с числом
4.0, постройте квадрат
этого числа на ленте и выведите
градиент квадрата по переменной.
Создайте переменную-ряд
2.0, 5.0, умножьте
ряд на себя поэлементно и
выведите градиент по этому ряду.
Создайте переменную 10.0,
сложите её с самой собой внутри
ленты и выведите градиент суммы
по переменной.