Вызов session.run () как для compute_gradients, так и для apply_gradients tenorflow - PullRequest
0 голосов
/ 11 февраля 2020

В тензорном потоке графики и train_ops запускаются в сеансе как вызов session.run (..). Однако, если мы сделаем вызов compute_gradients, а затем train_op как:

loss= ...
model_params = tf.trainable_variables()
compgrad_op = [optimizer.compute_gradients(loss, model_params)]
compgrad_op = tf.group(*compgrad_op)
gradvars = compgrad_op[0]
train_op = [optimizer.apply_gradients(gradvars, global_step=tf.train.get_global_step())]
train_op = tf.group(*train_op)

Теперь, если я вызвал session.run () для train_op и compgrad_op, например:

session.run(train_op,..)
session.run(compgrad_op,..)

Будет ли функция compute_gradients () вызываться только один раз, потому что session.run(train_op) уже содержит этот вызов функции, так как график для вызова apply_gradients () зависит от вызова compute_gradients ()? Или функция compute_gradients () будет вызываться 2 раза в каждом сеансе session.run(train_op) и session.run(compgrad_op)?

...