【梯度下降】求解y=cos(x)的最优值
2019-04-12 本文已影响0人
唯师默蓝
import numpy as np
# 设置学习率
eta = 0.1
# 设置 x 的初始值
theta = 0.1
# 设置阈值
pre = 0.00000000001
# 方程 f(x) = cos(x)
def Fun(x):
return np.cos(x)
# 对 x 求偏导
def PxFun(x):
return -np.sin(x)
# 更新参数x : x - eta * PxFun(x),eta为学习率
def RefreshX(x):
return x - eta * PxFun(x)
# 1、初始化 x 为任意参数
# 2、求解梯度(函数的导数)
# 3、更新参数theta : theta = theta - gradient*eta,eta为学习率
# 4、达到指定迭代次数时训练结束
while True:
if (abs(eta*PxFun(theta)) < pre):
break
last_theta=RefreshX(theta)
theta = last_theta
print("x:",theta)
print("最优解 :" ,theta)