Якобиан в TensorFlow
Якобиан - таблица частных
производных: строка соответствует
элементу результата, столбец -
элементу источника. Его даёт
метод jacobian на той же
ленте, что и обычный градиент.
Возьмём переменный вектор и квадрат каждой координаты. Производные не смешиваются, поэтому таблица диагональная:
import tensorflow as tf
x = tf.Variable([1.0, 2.0])
with tf.GradientTape() as tape:
y = x * x
jac = tape.jacobian(y, x)
print(jac) # выведет tf.Tensor([[2. 0.] [0. 4.]], shape=(2, 2), dtype=float32)
Если компоненты результата зависят от нескольких координат сразу, в таблице появятся ненулевые значения вне диагонали:
import tensorflow as tf
x = tf.Variable([1.0, 2.0])
with tf.GradientTape() as tape:
y = tf.stack([x[0] + x[1], x[0] * x[1]])
jac = tape.jacobian(y, x)
print(jac) # выведет tf.Tensor([[1. 1.] [2. 1.]], shape=(2, 2), dtype=float32)
Создайте переменный ряд
3.0, 4.0, возведите
каждую координату в куб
на ленте и выведите таблицу
частных производных.
Задайте вектор 2.0, 5.0
и на ленте соберите два числа:
сумму координат и их произведение.
Выведите якобиан этого результата
по исходному вектору.
Возьмите переменный ряд из трёх
чисел 1.0, 2.0, 3.0,
удвойте его поэлементно и
выведите таблицу производных
результата по каждой координате.