一个简单的纯python算法微分包
pyADiff的Python项目详细描述
pyADiff:一个简单的纯python算法微分包
pyADiff
是一个非常基本的算法微分包,它实现正向和伴随/反向模式微分。如果您正在寻找一个功能齐全、速度更快的库,可以看看google/jax、autograd或{a4}(或更多),但是如果您对一个能够快速“查看引擎盖下”的包感兴趣,您可能就在这里。在
动机
我开始这个项目的动机来自于听诺曼教授在RWTH Aachen University的讲座"Computational Differentiation"时的好奇心。所以基本上,我试图通过自己的实践来理解讲座中的概念。最后,我(肯定地)对结果感到惊讶,并决定将其打包到一个python包中。另外,这给了我一个机会来学习python的打包、分发、文档。。。在
基本用途
假设我们要计算函数的梯度
f(x₀, x₁) = 2 x₀ x₁².
这是一个相当简单的任务,因为通过简单的微积分,梯度是:
∇f(x₀, x₁) = (2 x₁², 4 x₀ x₁)
然而,我们用这个例子来说明pyADiff
的用法。在
importpyADiffasad# define the function fdeff(x):return2.*x[0]*x[1]**2.# call the gradient function of pyADiffdf=ad.gradient(f)x=[0.5,2.0]# Call the function f and the gradient function dfy=f(x)dy=df(x)print("f({}) = {}".format(x,y))# prints f([0.5, 2.0]) = 4.0print("f'({}) = {}".format(x,dy))# prints f'([0.5, 2.0]) = [8. 4.]
对应于解析梯度的计算。在
∇f(0.5, 2) = (2*2², 4*0.5*2) = (8, 4)
有关更复杂的示例,请参见Documentation或查看.ipynb notebooks
安装
使用pip
安装TODO
源安装
这将克隆存储库并使用setup.py
脚本安装pyADiff
包。在
文件
参考文献
算法微分:
- 乌韦·诺曼,讲座计算微分学,RWTH亚琛
- 项目
标签: