Подтвердить что ты не робот

Постоянная постоянная переменных во время оптимизатора

У меня есть вычислительный граф TensorFlow для тензора потерь L, который зависит от 2 tf.Variables, A и B.

Я хотел бы запустить градиентное восхождение по переменной A (A + = градиент L по A), удерживая B неподвижным, и наоборот - ускорение градиента на B (B + = градиент L по B), удерживая A фиксированным, Как это сделать?

4b9b3361

Ответ 1

tf.stop_gradient(tensor) может быть тем, что вы ищете. Тензор будет рассматриваться как постоянный для целей вычисления градиента. Вы можете создать две потери с разными частями, рассматриваемыми как константы.

Другой вариант (и часто лучше) - создать 2 оптимизатора, но явно оптимизировать только подмножества переменных, например.

train_a = tf.train.GradientDescentOptimizer(0.1).minimize(loss_a, var_list=[A])
train_b = tf.train.GradientDescentOptimizer(0.1).minimize(loss_b, var_list=[B])

и вы можете перебирать между ними обновления.