Python Numpy嵌套循环 - 快速计算方法?

时间:2016-03-31 17:26:08

标签: python loops numpy

在以下总结中:

enter image description here

我需要用以下内容替换s(点积):

enter image description here

我的代码非常慢:

    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))

如何让它更快?

1 个答案:

答案 0 :(得分:0)

你应该完全删除for循环(“矢量化代码”,正如他们在Matlab中所说的那样......)。最好的方法是先用矩阵形式表示你的方程,然后尝试用numpy来编写它们。

例如,您可以仅使用numpy操作计算整个二次内核,如下所示:

php -i

这将大大减少计算时间。