2017-06-01 34 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.]