自动微分

\(v_{-1} = x_1=2\)

自动微分最简单实现 :
自动微分本质是在计算的时候能自动求出梯度。所以每次两个函数进行运算的时候,重载那个运算符,完成自动计算梯度
import math
class DualNumber:
def __init__(self, val, grad):
self.val = val # 数值部分
self.grad = grad # 导数部分
# 重载加法
def __add__(self, other):
return DualNumber(self.val + other.val, self.grad + other.grad)
# 重载乘法
def __mul__(self, other):
return DualNumber(self.val * other.val,
self.val * other.grad + self.grad * other.val)
# 支持 sin 操作
def sin(self):
return DualNumber(math.sin(self.val), math.cos(self.val) * self.grad)
# 支持平方操作
def square(self):
return self * self

浙公网安备 33010602011771号