如何在TensorFlow 2.0中将两个梯度带结合起来?

3

我该如何将以下两个梯度带合并为一个:

x = tf.Variable(x, dtype=tf.float32)
with tf.GradientTape() as t:
    m, v = DGP.predict(x)
    dm_dx = t.gradient(m, x)
with tf.GradientTape() as t:
    m, v = DGP.predict(x)
    dv_dx = t.gradient(v, x)

以下是我喜欢的方式,但按照我写的方式无法实现:

with tf.GradientTape() as t:
    m, v = DGP.predict(x)
    dm_dx, dv_dx = t.gradient([m,v], x)
2个回答

5

您应该能够完成以下操作:

x = tf.Variable(x, dtype=tf.float32)
with tf.GradientTape(persistent=True) as t:
    m, v = DGP.predict(x)
    dm_dx = t.gradient(m, x)
    dv_dx = t.gradient(v, x)

警告显示持久化非常低效,但我猜那仍然是唯一的方法。谢谢。 - azerila

3
为了避免需要长时间保持磁带,您可以采取以下措施:

为此,您可以这样做:

x = tf.Variable(x, dtype=tf.float32)
with tf.GradientTape() as t1, tf.GradientTape() as t2:
    m, v = DGP.predict(x)
    dm_dx = t1.gradient(m, x)
    dv_dx = t2.gradient(v, x)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接