【梯度下降】求解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)
上一篇下一篇

猜你喜欢

热点阅读