计算梯度python代码
时间: 2024-11-05 16:34:06 浏览: 14
在Python中计算梯度通常涉及到数值微分或自动微分(Automatic Differentiation)。这里我们以最常见的numpy库为例,展示如何使用数值微分来计算函数的一阶导数(梯度)。假设我们要计算函数f(x) = x**2 + 3x + 2关于x的梯度。
```python
import numpy as np
def function(x):
return x**2 + 3*x + 2
# 使用中心差法近似梯度
def numerical_gradient(f, x, h=1e-4):
numgrad = np.zeros_like(x)
for idx in range(len(x)):
# 拿到当前值和偏移后的值
orig_val = f(x)
x_perturbed = x.copy()
x_perturbed[idx] += h
perturbed_val = f(x_perturbed)
# 计算梯度
numgrad[idx] = (perturbed_val - orig_val) / h
return numgrad
# 示例
x = np.array([1., 2., 3.])
gradient = numerical_gradient(function, x)
print("The gradient of the function at point", x, "is:", gradient)
```
阅读全文