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

  • 相关阅读:
    将博客搬至CSDN
    JDBC
    Java刷题常用API
    Java的反射机制
    Java的IO流
    Docker原理:Cgroup
    Docker原理:Namespace
    Anaconda软件安装使用问题
    初步了解Unix系统的I/O模式
    深入理解索引和AVL树、B-树、B+树的关系
  • 原文地址:https://www.cnblogs.com/yaos/p/14014161.html
Copyright © 2011-2022 走看看