当前位置: 首页 > 行业动态 > 正文

环球快资讯丨sicp学习笔记: 用lisp实现一个求导程序

来源 : 哔哩哔哩    时间:2023-03-17 21:06:25

记得之前看tensorflow, numpy等库的api中提供了自动求导的函数, 觉得其中一定是用了某些高深的数值分析算法,但在 sicp书中也给了个简单的求导程序, 本质是基于求导法则的递归性质来实现的, 感觉有点意思记录一下。

我们先来看看求导法则:

可以看到最后两条求导法则满足递归的性质, 求导的运算过程通过分解后会得到越来越小的片段,最终将产生出常量和变量, 他们的导数都是0或者1.


(相关资料图)

代码实现

首先我们定义谓语(返回值为bool的函数):

然后我们需要定义出结果的构造方法:

最后实现求导函数:

接下来我们可以测试一下啦:

复杂一点的:

当然, 这个求导程序还是一个朴素的实现, 还需要对结果进行化简, 但是它已经实现了最核心的部分了...

最近在重0开始撸一个c++小型的深度学习框架, 后面我也会添加自动求导的功能:

https://github.com/StepfenShawn/tidf

X 关闭

精心推荐

Copyright ©  2015-2022 亚洲建筑网版权所有  备案号:豫ICP备20022870号-9   联系邮箱:553 138 779@qq.com