一个简单的纯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 401在API URL上带有声明性Http客户端,并带有@Secured(SecurityRule.IS_ANONYMOUS)注释   java如何在Android中创建计时器?   Java8WebStart安全弹出窗口   java会通过以下两种方式导致堆空间耗尽吗?   java项目调度GA:染色体的高效数据结构   java Apache POI:如何在Excel文件中插入列   java在JRE系统库中每个jar扮演什么角色   java如何在抽象类中执行@mock(不是注入mock)   java如何使用opensearch和Lucene发送搜索查询?   java在ApachePOI中处理空列   java广播接收器未接收到目标   java错误ELF类:ELF类64(可能原因:体系结构字宽不匹配)   java调用Web服务(SSL)时出错   用于iot集线器设备固件更新的java Rest API   通过xslt将xml转换为文本文件时引发java异常   Java linux打印问题   Java XML转换器重复行   java从另一个类的方法将数组导入mainActivity类   多线程选择与Java交互的线程   我想在java程序中打印以下格式的文件: