Объект _UnreadVariable не имеет атрибута «run» при попытке запустить оптимизатор keras - PullRequest
1 голос
/ 19 апреля 2020

Я пытаюсь запустить пример кода на странице tf.keras.optimizers.Optimizer . Я получаю следующую ошибку при попытке его запустить.

AttributeError: '_UnreadVariable' object has no attribute 'run'

Ниже приведен код, который я пытаюсь запустить.

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
opt_op = opt.minimize(loss, var_list=[var1, var2])
opt_op.run()

1 Ответ

0 голосов
/ 19 апреля 2020

Вот мое мнение:

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

Ссылка: tf.keras.optimizers.Optimizer

Один хороший пример, который прояснит ваше понимание: оптимизатор тензорного потока v2


Обновление :

Когда следует использовать выполнение Eager в TensorFlow?

Обязательно использовать выполнение в TF, когда Вы хотите оценить операции немедленно, без построения графиков. Операции TF возвращают конкретные значения вместо построения вычислительного графа для последующего использования. Кроме того, он позволяет легко игнорировать все жаргоны и легко приступить к работе с TensorFlow и отладочными моделями.

...