2016-10-22 32 views
0

即時通訊嘗試實現使用Numpy的漸變下降算法。後面的內容是避免算法中的任何循環,所以我使用矩陣和numpy.dot來進行計算。我敢肯定,數學的,但每當我試圖通過這個功能我得到一個錯誤信息:使用numpy的漸變下降機器學習

def grad(feature_matrix, output, initial_weights, step_size, tolerance): 
    converged = False 
    w = np.array(initial_weights) # make sure it's a numpy array 
    X=feature_matrix 
    y=output 
    s=step_size 
    t=0 
    RSS=0 
    J=[] 
    while not converged: 
     y_h=np.dot(X,w) 
     e=y-_yh 
     w=w+s*2*np.dot(np.transpose(X),e) 
     gradient_magnitude=sqrt(np.dot(np.transpose(X),e) 
     RSS=np.dot(e,e) 
     J.append(RSS) 
     t=t+1 
     if gradient_magnitude < tolerance: 
      converged = True 
    return(weights,J,t) 

我總是得到這個錯誤:

File "<ipython-input-14-db210106141b>", line 15 
    RSS=np.dot(e,e) 
    ^
SyntaxError: invalid syntax 

如果刪除RSS = np.dot( e,e)行並嘗試通過該函數,然後我得到:

File "<ipython-input-15-b0b1a5aebd0c>", line 16 
    J.append(RSS) 
    ^
SyntaxError: invalid syntax 

它似乎是與函數結構的東西。 這可能是顯而易見的,我很想念,但我一直在尋找這個功能三天,看着其他的例子,我只是找不到錯誤。

請幫忙!

+0

提示:如果您刪除線和錯誤仍然存​​在這不是刪除線這是錯誤的。在 – miraculixx

回答

0

實際的錯誤經常發生在Python意識到發生了語法錯誤之前。在這種情況下, 存在丟失的右括號,),在這條線:

gradient_magnitude=sqrt(np.dot(np.transpose(X),e) 
+0

之前查看一行你真的認爲這是唯一的錯誤嗎?但是在這裏,OP表示它發生在包含錯誤 – kmario23

+0

的行後面,實際上Python指示在正確位置的語法錯誤 – miraculixx

+0

@ kmario23第一個壞標記發生錯誤,這是參數後面的無意義字符:'(np.dot( np.transpose(X),e)J ...'。J是一個語法錯誤,其他的都是格式良好的。 – Mephy