简单介绍下python的几个自动求导工具,tangent、autograd、sympy; 在各种机器学习、深度学习框架中都包含了自动微分,微分主要有这么四种:手动微分法、数值微分法、符号微分法、自动微分法,这里分别简单走马观花(hello world式)的介绍下下面几种微分框
简单介绍下python的几个自动求导工具,tangent、autograd、sympy;
输出结果表达式z的导函数z‘=2*y
把y 等于6 带入计算 结果 为12
Autograd求偏导
输出:7.0 tangent求导
默认为求z关于x的偏导数
输出偏导数值为 8 ,z' = 2 * x,此处x传任何值都是一样的
可通过使用wrt参数指定求关于某个参数的偏导数,下面为求z关于y的偏导数
输出值为10 ,z' = 2 *y,此处x传任何值都是一样的
上面说了那么多也没体现出tangent的核心:源到源(source-to-source) 在生成导函数的时候加入verbose=1参数,即可看到tangent为我们生成的用于计算导数的函数,默认情况下该值为0所以我们没感觉到tangent的求导与别的自动微分框架有什么区别;
在执行完上述代码后,我们看到了tangent为我们所生成用于求导数的函数:
ddfdx函数就是所生成的函数,从中我们也可以看到表达式z的导函数z'=2 * x,tangent就是通过执行该函数用于求得导数的; sympy 中的自动微分只是它强大的功能之一,autograd 从名字也可知它就是为了自动微分而生的,tangent初出茅庐2017年底Google才发布的自动微分方法也比较新颖,从17年发v0.1.8版本后也没见发版,源码更新也不够活跃;sympy、autograd比较成熟,tangent还有待观察; |
2019-06-18
2019-07-04
2021-05-23
2021-05-27
2021-05-27