yaos
with tf.GradientTape(persistent=True) as tape:
    z1 = f(w1, w2 + 2.)
    z2 = f(w1, w2 + 5.)
    z3 = f(w1, w2 + 7.)
    z = [z1,z3,z3]
[tape.gradient(z, [w1, w2]) for z in (z1, z2, z3)]

输出结果

[[<tf.Tensor: id=56906, shape=(), dtype=float32, numpy=40.0>,
  <tf.Tensor: id=56898, shape=(), dtype=float32, numpy=10.0>],
 [<tf.Tensor: id=56919, shape=(), dtype=float32, numpy=46.0>,
  <tf.Tensor: id=56911, shape=(), dtype=float32, numpy=10.0>],
 [<tf.Tensor: id=56932, shape=(), dtype=float32, numpy=50.0>,
  <tf.Tensor: id=56924, shape=(), dtype=float32, numpy=10.0>]]
with tf.GradientTape(persistent=True) as tape:
    z1 = f(w1, w2 + 2.)
    z2 = f(w1, w2 + 5.)
    z3 = f(w1, w2 + 7.)
    z = [z1,z2,z3]
tape.gradient(z, [w1, w2])

输出结果

[<tf.Tensor: id=57075, shape=(), dtype=float32, numpy=136.0>,
 <tf.Tensor: id=57076, shape=(), dtype=float32, numpy=30.0>]

总结:如果对一个listz=[z1,z2,z3]求微分,其结果将自动求和,而不是返回z1z2z3各自对[w1,w2]的微分。

分类:

技术点:

相关文章:

  • 2021-11-18
  • 2021-11-18
  • 2022-12-23
  • 2021-11-18
  • 2022-03-05
  • 2022-12-23
  • 2021-11-18
  • 2021-11-18
猜你喜欢
  • 2021-11-18
  • 2021-06-20
  • 2022-12-23
  • 2021-06-10
  • 2021-11-18
  • 2021-11-18
相关资源
相似解决方案