【问题标题】:Python Numpy nested loop - fast way to calculate?Python Numpy 嵌套循环 - 快速计算方法?
【发布时间】:2016-03-31 17:26:07
【问题描述】:

总结如下:

我需要将 s(dot product) 替换为以下内容:

我的代码非常慢:

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

我怎样才能加快速度?

【问题讨论】:

标签: python loops numpy


【解决方案1】:

您应该完全删除 for 循环(“向量化代码”,正如他们在 Matlab 中所说的......)。最好的方法是首先以矩阵形式制定方程,然后尝试仅使用 numpy 编写它们。

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

K = (x_v1.dot(x_v1.T) + rho) ** 2

这已经大大减少了计算时间。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-17
相关资源
最近更新 更多