如何用Python计算多元Sigmoid函数的偏导数?
用SymPy计算多元Sigmoid函数的偏导数
假设你要计算的是多元线性组合输入的Sigmoid函数的偏导数,比如常见形式:
σ(z) = 1/(1 + e^(-z)),其中 z = w₁x₁ + w₂x₂ + b(这里以2个输入变量为例,可扩展到更多变量)
以下是正确实现代码:
import sympy as sym # 定义所有需要的符号变量 w1, w2, x1, x2, b = sym.symbols('w1 w2 x1 x2 b') # 构造线性组合z z = w1*x1 + w2*x2 + b # 定义Sigmoid函数 sigmoid = 1 / (1 + sym.exp(-z)) # 示例1:对权重w1求偏导 d_sigmoid_w1 = sigmoid.diff(w1) print("对w1的偏导数:", d_sigmoid_w1) # 示例2:对输入x2求偏导 d_sigmoid_x2 = sigmoid.diff(x2) print("对x2的偏导数:", d_sigmoid_x2) # 示例3:对偏置b求偏导 d_sigmoid_b = sigmoid.diff(b) print("对b的偏导数:", d_sigmoid_b)
关键说明
- 必须先明确Sigmoid的输入是线性组合z,再基于z定义Sigmoid函数,直接混写变量容易导致求导逻辑错误
- 如果你的多元Sigmoid是其他形式(比如向量形式),只需调整z的表达式,求导逻辑完全一致
- SymPy会自动化简导数结果,比如对w1的偏导最终会化简为
x₁⋅σ(z)⋅(1-σ(z)),和Sigmoid导数的经典结论匹配
内容的提问来源于stack exchange,提问作者user15675493
相关产品推荐
相关产品推荐

