【问题标题】:How can I combine two gradient tapes in TensorFlow 2.0如何在 TensorFlow 2.0 中组合两个渐变磁带
【发布时间】:2019-09-17 12:27:53
【问题描述】:

如何将以下两个渐变胶带合二为一:

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)

【问题讨论】:

    标签: python tensorflow neural-network deep-learning tensorflow2.0


    【解决方案1】:

    你应该可以这样做:

    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)
    

    【讨论】:

    • 一个警告来自持久性非常低效,但我想这仍然是唯一的方法。谢谢。
    【解决方案2】:

    为避免使用永久性磁带,您可以这样做:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2021-01-09
      相关资源
      最近更新 更多