梯度下降算法python
时间: 2023-07-25 12:43:20 浏览: 104
python实现梯度下降算法
好的,这里给出一个使用梯度下降算法求解多元函数最小值的Python代码:
```python
import numpy as np
def f(x):
x1, x2 = x
return x1**2 + x2**2 - 2*x1 - 6*x2 + 6
def df(x):
x1, x2 = x
return np.array([2*x1 - 2, 2*x2 - 6])
def gradient_descent(f, df, x0, alpha, eps=1e-6, max_iter=10000):
x = x0
for i in range(max_iter):
grad = df(x)
if np.linalg.norm(grad) < eps:
break
x -= alpha * grad
return x
x0 = np.array([0, 0]) # 初始值
alpha = 0.1 # 步长
x_min = gradient_descent(f, df, x0, alpha)
print(x_min)
```
其中,`f`是目标函数,`df`是目标函数的梯度,`x0`是初始值,`alpha`是步长,`eps`是梯度范数的阈值,`max_iter`是最大迭代次数,`x_min`是最小值。
需要注意的是,梯度下降算法求解的最小值可能是局部最小值,而不是全局最小值。因此,在使用梯度下降算法求解时,需要对步长进行合理选择,或者使用其他更加鲁棒的优化方法,如拟牛顿法、共轭梯度法等。
阅读全文