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]求微分,其结果将自动求和,而不是返回z1、z2和z3各自对[w1,w2]的微分。
补充知识:Python/Numpy 矩阵运算符号@
如下所示:
A = np.matrix('3 1; 8 2')
B = np.matrix('6 1; 7 9')
A@B matrix([[25, 12], [62, 26]])
以上这篇TensorFlow Autodiff自动微分详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解Python中高阶函数(map,filter,reduce,sorted)的使用
高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数。本文为大家详细讲解了Python中常用的四个高阶函数,感兴趣的可以了解一下2022-04-04
详解Python 多线程 Timer定时器/延迟执行、Event事件
这篇文章主要介绍了Python 多线程 Timer定时器/延迟执行、Event事件的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-06-06


最新评论