Документация не совсем понятна. Я полагаю, что градиенты, которые можно получить через opt.compute_gradients(E, [v])
, содержат ∂E/∂x = g(x)
для каждого элемента x
тензора, который хранится v
. Выполняет ли opt.apply_gradients(grads_and_vars)
выполнение x ← -η·g(x)
, где η
- скорость обучения? Это означало бы, что если я хочу добавить переменную с положительным добавлением p
к переменной, мне нужно будет изменить g(x) ← g(x) - (1/η)p
, например. например:
opt = tf.train.GradientDescentOptimizer(learning_rate=l)
grads_and_vars = opt.compute_gradients(loss, var_list)
for l, gv in enumerate(grads_and_vars):
grads_and_vars[l] = (gv[0] - (1/l) * p, gv[1])
train_op = opt.apply_gradients(grads_and_vars)
Есть ли лучший способ сделать это?