一个简单的纯python算法微分包

pyADiff的Python项目详细描述


pyADiff:一个简单的纯python算法微分包

Documentation Status

pyADiff是一个非常基本的算法微分包,它实现正向和伴随/反向模式微分。如果您正在寻找一个功能齐全、速度更快的库,可以看看google/jaxautograd或{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包。在

^{pr2}$

文件

readthedocs.org可用

参考文献

算法微分:

  • 乌韦·诺曼,讲座计算微分学,RWTH亚琛

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在导入到Google工作表时使用ApachePOI显示系列标签   java在Swing表上修改数据生成SQL   java TCP数据包在网络级别合并   java自动连线bean在线程位置为空   javasocket。禁用无线连接时getOutputStream()阻塞   JSON上的javascript字符串数组。stringify输出unicode字符   java在Oracle数据库中存储不同类型数据的最佳体验   Spring MVC中模板引擎后的java进程输出   不知从哪里来的java空字符串。   如何加载java。使用Adobe Flex的客户端的属性文件?   java如何替换多层括号之间的所有内容?   {JSONObject必须以java'开头   java使用commandButton或commandLink返回并管理HTML控件值   java Android大文本视图动态   java JMock需要自定义类   java Android应用程序在emulator中工作,但在设备中失败   java连接到derby数据库时使用什么文件路径格式?   java在一个函数调用中返回两个结果?