Tensorflow 2.0: AttributeError: Tensor.name is meaningless when eager execution is enabled
Tensorflow 2.0: AttributeError: Tensor.name is meaningless when eager execution is enabled
在 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])
在磁带中,您只需计算优化器的正向传递,最小化定义不是正向传递的一部分,因此您必须远程处理它们。
此外,如果你想使用优化器的minimize
方法,你不必使用tf.GradienTape
对象,而只需将forward pass(损失计算)定义为函数,然后优化器将为您创建磁带 + 最小化函数。
但是,由于要使用常量而不是变量,因此必须使用 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
调用会引发异常)
在 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])
在磁带中,您只需计算优化器的正向传递,最小化定义不是正向传递的一部分,因此您必须远程处理它们。
此外,如果你想使用优化器的minimize
方法,你不必使用tf.GradienTape
对象,而只需将forward pass(损失计算)定义为函数,然后优化器将为您创建磁带 + 最小化函数。
但是,由于要使用常量而不是变量,因此必须使用 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
调用会引发异常)