TensorFlow是否通过内置优化进行区分?



我正在实现一个展开的 GAN,我正在使用对optimizer.minimize的调用来更新我的鉴别器权重 5 个左右的步骤,然后再更新我的生成器。

我的问题是更新生成器的调用是否会隐式反向传播到鉴别器值的 5 次更新?

也许要问的重要问题是变量对象是否保留了计算其赋值的图?

不幸的是,当我运行时:

a = tf.Variable(0.1)
b = tf.Variable(0.0)
op = tf.no_op()
for _ in range(5):
with tf.control_dependencies([op]):
op = b.assign_add(a)
g = tf.gradients(b, a)

g 是 None,表明变量忽略导致其赋值的图形。我希望梯度是 0.5,或者至少它会保留最新作业的图表并计算为 0.1......

这里的a,b是自变量,所以梯度将是None;赋值只会改变值,不会产生依赖关系。

a = tf.Variable(0.1)
b = tf.Variable(0.0)
op = tf.no_op()
for _ in range(5):
with tf.control_dependencies([op]):
op = b.assign_add(a)
# If you create a op that depends on a, gradients won't be None
b1 = a*b
g = tf.gradients(b1, a)

我的问题是更新生成器的调用是否会隐式反向传播到鉴别器值的 5 次更新?

因此,如果您设置了依赖项,问题的答案是肯定的。

最新更新