zoukankan      html  css  js  c++  java
  • TensorFlow Autodiff自动微分

    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]的微分。

  • 相关阅读:
    for 续1
    8 解决多线程对共享数据出错
    7 多线程 全局变量
    6 线程threading
    5 多进程copy文件
    4 进程间通信Queue [kjuː]
    3 进程池
    2 进程multiprocessing [mʌltɪ'prəʊsesɪŋ] time模块
    1 多任务fork Unix/Linux/Mac
    16 pep8 编码规范
  • 原文地址:https://www.cnblogs.com/yaos/p/12753268.html
Copyright © 2011-2022 走看看