我試圖用梯度下降法找到一個函式的最優點,但是它只收斂到初始條件。可能是我的代碼或想法不正確。請提供這方面的直覺。
。謝謝你。
我的代碼。 初始值是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: df = 2*x
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)
uj5u.com熱心網友回復:
while True:
x_new = x_old - lr*(grad(x_old))
x_old = x_new
y = nl.norm(grad(x_old))
if(y<=1e-03) 。
breakprint(x_new)
你可以將for改為while
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316559.html
標籤:
上一篇:Laravel的一個特定路由給出403(nginx)。
下一篇:梯度下降成本圖與時代問題的關系
