在以下总结中:
我需要用以下内容替换s(点积):
我的代码非常慢:
summing = 0
update = np.zeros((5172,))
for index, xi in enumerate(x_v1):
yval = y[index]
kernel_sum = 0
for index_val, x_val in enumerate(x_v1):
kernel_sum += update[index_val] *(np.dot(x_val, xi.transpose()) + 1)**2
dot_product = kernel_sum
dot_product = np.clip(dot_product, -20, 20)
summing += yval * np.log(sigmoid(dot_product)) + (1-yval)* np.log(1-sigmoid(dot_product))
如何让它更快?
答案 0 :(得分:0)
你应该完全删除for循环(“矢量化代码”,正如他们在Matlab中所说的那样......)。最好的方法是先用矩阵形式表示你的方程,然后尝试用numpy来编写它们。
例如,您可以仅使用numpy操作计算整个二次内核,如下所示:
php -i
这将大大减少计算时间。