常见的深度学习框架基本都支持自动微分机制,能够在无需手动推导公式的情况下求函数各个自变量的一阶导数。最近在做智能控制的大作业时决定搞一个自动微分,想着融进大作业里面混点分。一开始的思路非常简单,就是利用基本的求导方法和递归,但是随着不断深入扩充功能后才发现把问题想得太简单,写了一半就放弃了,这里简单记录一下。我一共写了两个类。第一个类叫agnum,该类在初始化中使用一个长度为3的列表记录操作符号和生成此类的两个父节点,例如A=B*C,那么A的两个父节点就是B和C,操作符号为*。反向求导的时候,只需要从某个函数中不断溯源,和根据求导规则进行递归计算即可,只需要注意判断一下求导目标是否是当 ...