Tensorflow 2.0: AttributeError: Tensor.name не имеет смысла, когда включено активное выполнение - PullRequest
0 голосов
/ 06 апреля 2019

Продолжайте получать эти ошибки с tenorflow 2.0.Это должно работать?

import tensorflow as tf
import numpy as np

x = tf.constant(3.0)
with tf.GradientTape() as t:
    t.watch(x)
    y = (x - 10) ** 2
    opt = tf.optimizers.Adam()
    opt.minimize(lambda: y, var_list=[x])

1 Ответ

2 голосов
/ 07 апреля 2019

В ленте вам нужно только вычислить передний проход, оптимизатор и определение минимизации не являются частью прямого прохода, поэтому вы должны их удалить.

Более того, если вы хотите использовать метод оптимизатора minimize, вам не нужно использовать объект tf.GradienTape, а просто определить прямой проход (вычисление потерь) как функцию, тогда оптимизатор создать ленту + минимизировать функцию для вас.

Однако, поскольку вы хотите использовать константу, а не переменную, вы должны использовать tf.GradientTape и вручную вычислить значение убытка.

import tensorflow as tf

x = tf.constant(3.0)
with tf.GradientTape() as t:
    t.watch(x)
    y = (x - 10) ** 2
grads = t.gradient(y, [x])

Конечно, вы не можете применять градиенты

opt = tf.optimizers.Adam()
opt.apply_gradients(zip([y], [x]))

, поскольку x не обучаемая переменная, а константа (вызов apply_gradients вызовет исключение)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...