Tensorflow 2.0:AttributeError:启用急切执行时,Tensor.name没有意义

时间:2019-04-06 19:08:41

标签: tensorflow2.0

通过tensorflow 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 个答案:

答案 0 :(得分:2)

在磁带中,您只需计算优化器的前向通过,而minize定义就不属于前向通过,因此您必须将它们远程化。

此外,如果您想使用优化器的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调用将引发异常)