2017-06-01 49 views
0

我目前正在嘗試在Python中使用numpy庫來編寫這個beastie代碼。 lambda * w應該在總和之外。有效編碼函數的梯度

目前,我已經使用for循環和外部運行總數編碼了問題;但是,這種方法需要很長時間。 我的向量爲y,wx是非常大的 - 認爲100,000元的元素。我想知道是否有一種更簡單的方法來使用簡單的矩陣運算來代替通過另一個元素循環向量一個元素來代替元素。

這是我的量化代碼:

xty = xtrain.T.dot(ytrain) 
e = math.exp(-w_0.T.dot(xty)) 
gradient = (-xty*(e/1+e)-lambda_var*w_0) 

gradient

+0

分享你的代碼?如果可能的話,請添加最少的樣本代表相關投入。 – Divakar

回答

0

如果我正確理解你的問題,你可能只需要硬着頭皮與環去:

import numpy as np 
wave = 1e3 
xs, ys, w = np.arange(1, 4), np.arange(4, 7), np.arange(7, 10) 
eps = np.zeros(w.T.shape) 
for x, y in zip(xs, ys): 
    eps += -y * np.exp(-y * w.T * x) * x/(1 + np.exp(-y * w.T * x)) 
print(eps + wave * w) 

[ 7000. 8000. 9000.]