Вот мое мнение:
import tensorflow as tf
var1 = tf.Variable(0.0)
var2 = tf.Variable(0.0)
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
loss = lambda: 3 * var1 * var1 + 2 * var2 * var2
#loss_fn = lambda: f(var1, var2)
# init vals
print("Initial values:",some_fn(var1,var2).numpy())
# this is applicable only on graph mode
#opt_op = opt.minimize(loss, var_list=[var1, var2])
#opt_op.run()
# however, just call this in eager mode
opt.minimize(loss, var_list=[var1, var2])
opt.variables()
Записная книжка Colab: tenorflow_optimizer_stackoverflow_q1.ipynb
Выполнение: ![enter image description here](https://i.stack.imgur.com/uFvQs.png)
Ссылка: tf.keras.optimizers.Optimizer
Один хороший пример, который прояснит ваше понимание: оптимизатор тензорного потока v2
Обновление :
Когда следует использовать выполнение Eager в TensorFlow?
Обязательно использовать выполнение в TF, когда Вы хотите оценить операции немедленно, без построения графиков. Операции TF возвращают конкретные значения вместо построения вычислительного графа для последующего использования. Кроме того, он позволяет легко игнорировать все жаргоны и легко приступить к работе с TensorFlow и отладочными моделями.