用python代码写一个梯度下降算法
时间: 2023-12-17 18:50:20 浏览: 91
好的,以下是一个简单的梯度下降算法的Python实现:
```python
import numpy as np
# 定义损失函数和梯度函数
def loss_function(x):
return x**2 + 2*x + 1
def gradient_function(x):
return 2*x + 2
# 定义梯度下降函数
def gradient_descent(gradient_function, initial_x, learning_rate, num_iterations):
x = initial_x
for i in range(num_iterations):
gradient = gradient_function(x)
x -= learning_rate * gradient
return x
# 测试梯度下降函数
initial_x = 0
learning_rate = 0.1
num_iterations = 100
minimum = gradient_descent(gradient_function, initial_x, learning_rate, num_iterations)
print("最小值为: ", minimum)
print("损失函数最小值为: ", loss_function(minimum))
```
这个脚本实现了一个简单的梯度下降算法,其目标是找到函数 y = x^2 + 2x + 1 的最小值。在这个例子中,损失函数和梯度函数被硬编码为函数 `loss_function` 和 `gradient_function`,然后在主函数中被传递给 `gradient_descent` 函数。 `gradient_descent` 函数接受一个初始值、学习率和迭代次数作为输入,并返回最小值。最后,我们输出了找到的最小值和损失函数的最小值。
阅读全文