通过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])
答案 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
调用将引发异常)