跳到主要内容

Zygote.jl

Zygote.jl 和 ChainRules.jl 的关系

这里,首先提取出函数的类型签名(分关键字函数和非关键字函数两类),然后检测是否定义了 ChainRule,如果有的话,就调用 rrule 函数提取出来 pullback,并且用一个 ZBack 包起来使得它能符合 Zygote 的习惯。

我的思考

Zygote.jl 一共只有 3500 行 Julia Code,不算 forwardlib 目录甚至只有 1240 行,不禁令人深思。Julia 表达抽象语义的能力使得开源社区内广泛地阅读源码成为可能。