【问题标题】:initial value error while using gradient descent algorithm使用梯度下降算法时的初始值误差
【发布时间】:2021-09-17 05:10:59
【问题描述】:

问题: 初始值为 10000,解收敛到 10000,而不是实际解 1。

import numpy.linalg as nl
x_ini=10000

def obj(x):
    f = x**2 - 2*x + 3
    return f

def grad(x):
    df = 2*x - 2
    return df

n_iter=1000
lr=0.001

x_old = x_ini


for _ in range(True):
    
    x_new = x_old - lr*(grad(x_old))
    x_old = x_new
    
    if(nl.norm(grad(x_old))<=1e-03):
        break
    x_new = x_old
    
print(x_new)

【问题讨论】:

  • for _ in range(True) 将只运行一次

标签: python machine-learning initialization gradient-descent convergence


【解决方案1】:
while True:
    
    x_new = x_old - lr*(grad(x_old))
    x_old = x_new
    y = nl.norm(grad(x_old))
    if(y<=1e-03):
        break
    x_new = x_old

print(x_new)

您可以将for 更改为while

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 2020-01-09
    • 2018-01-02
    • 2016-11-09
    • 2021-06-23
    • 1970-01-01
    • 2017-07-17
    • 2014-01-11
    • 2019-06-24
    相关资源
    最近更新 更多