有效编码函数梯度

时间:2017-06-01 03:50:06

标签: python numpy

我目前正在尝试用Python编写这个beastie(使用numpy库)。 lambda * w应该在求和之外。

目前,我使用for循环编码问题,并在外部运行总计;但是,这种方法需要很长时间。 ywx的向量非常大 - 想想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

1 个答案:

答案 0 :(得分: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.]