Python以更快的方式采用N维数组的对数

时间:2018-06-16 21:47:55

标签: python arrays

我的问题很简单,但我需要你的帮助。采用np.log(x)数组不是问题。但在我的情况下,这个数组可能是N维/张量(N=2..1024和每个维度100个样本)。

N=4计算元素np.log(x)需要 10秒。我需要在费用函数中使用此log(x)进行优化,因此,所有优化过程大约需要 2小时

因此,问题是如何以更快的方式为N维数组实现此log(x)。真的有可能吗?

提前致谢。

3 个答案:

答案 0 :(得分:0)

也许多处理可以帮助你解决这种情况

答案 1 :(得分:0)

numpy log函数在C中实现并针对处理数组进行了优化,因此尽管您可以通过使用较低级语言编写自己的自定义日志函数来减少一些开销,但这将是仍然是瓶颈。如果你想看到一个大的速度提升,你需要以不同的方式实现你的算法。

是否真的有必要记录所有这些元素?您提到每个维度可以包含100个样本,您是否计划对这些样本求平均值?如果是这样,你可以通过使用log(a)+ log(b)= log(ab)的事实来减少你需要计算的对数,所以平均值[log(a0)+ log(a1)+ .. 。+ log(aN)] /(a0 + a1 + ... + aN)与log(a0 * a1 * ... * aN)/(a0 + a1 + ... + aN)相同。

答案 2 :(得分:0)

谢谢大家

问题是我必须处理大量条目。我刚刚找到了另一个优化成本函数。

但是,为了精确地加速此代码-我认为完全针对我的信号类型使用自制日志表的想法可以使其工作。