自动微分

\(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

posted @ 2025-05-14 21:43  拾墨、  阅读(14)  评论(0)    收藏  举报