2017-08-19 11 views
0

ちょっと、私は線形仮説のためにこのアルゴリズムを理解しようとしています。私の実装が正しいかどうかわかりません。私はそれが正しくないと思うが、何が欠けているのか分からない。Pythonの実装における勾配降下問題

theta0 = 1 
theta1 = 1 
alpha = 0.01 
for i in range(0,le*10): 
    for j in range(0,le): 
     temp0 = theta0 - alpha * (theta1 * x[j] + theta0 - y[j]) 
     temp1 = theta1 - alpha * (theta1 * x[j] + theta0 - y[j]) * x[j] 
     theta0 = temp0 
     theta1 = temp1 

print ("Values of slope and y intercept derived using gradient descent ",theta1, theta0) 

これは私に4番目の精度に対する正解を与えています。しかし、それをネット上の他のプログラムと比較すると、私はそれによって混乱しています。

ありがとうございます! グラデーション降下アルゴリズムの

+0

は、一般的に、あなたは繰り返します。私はここにそれを見ない。 – Quickbeam2k1

+0

私はそれを認識していますが、すぐに実装しようとしていました。私はループを10回以上100回以上実行すると仮定しました。 – slayer

+0

得られる進歩もアルファに依存します。最初の10または100ステップで収束を達成できるアルファ値および問題が存在する可能性があります。しかし、一般的にこれは達成するのが難しいかもしれません – Quickbeam2k1

答えて

1

実装:E特定のエラー指標が所定の最大誤差よりも小さくなるまで

import numpy as np 

cur_x = 1 # Initial value 
gamma = 1e-2 # step size multiplier 
precision = 1e-10 
prev_step_size = cur_x 

# test function 
def foo_func(x): 
    y = (np.sin(x) + x**2)**2 
    return y 

# Iteration loop until a certain error measure 
# is smaller than a maximal error 
while (prev_step_size > precision): 
    prev_x = cur_x 
    cur_x += -gamma * foo_func(prev_x) 
    prev_step_size = abs(cur_x - prev_x) 

print("The local minimum occurs at %f" % cur_x) 
+0

ありがとう、私はそれを実行し、あなたに戻ってきます。 – slayer

関連する問題