一元函数的梯度下降代码
以下是一个简单的一元函数的梯度下降代码实现:
import numpy as np
# 定义目标函数
def f(x):
return x**2 + 5*np.sin(x)
# 定义目标函数的一阶导数
def df(x):
return 2*x + 5*np.cos(x)
# 设置初始参数
x0 = 2
learning_rate = 0.01
max_iterations = 1000
# 定义梯度下降函数
def gradient_descent(x0, learning_rate, max_iterations):
x = x0
for i in range(max_iterations):
gradient = df(x)
x -= learning_rate * gradient
return x
# 运行梯度下降函数
x_min = gradient_descent(x0, learning_rate, max_iterations)
# 输出结果
print("最小值点:", x_min)
print("最小值:", f(x_min))
在这个例子中,目标函数是 $f(x) = x^2 + 5\sin(x)$,目标是找到使函数最小化的输入 $x$。我们使用梯度下降算法来最小化函数。在每次迭代中,我们计算目标函数的一阶导数 $\frac{df(x)}{dx}$,并将其乘以学习率 $\alpha$。然后我们将当前的 $x$ 减去这个乘积,以更新 $x$。我们不断地进行这个过程,直到达到最大迭代次数,或者找到满足收敛条件的最优解。
在这个例子中,我们的初始值为 $x_0 = 2$,学习率为 $\alpha = 0.01$,最大迭代次数为 $1000$。最终输出的结果是最小值点和最小值。
原文地址: http://www.cveoy.top/t/topic/buVG 著作权归作者所有。请勿转载和采集!