我的问题很琐碎,但我需要你的帮助。获取数组的np.log(x)
不是问题。但在我的例子中,这个数组可以是N维/张量(N=2..1024
和每维100个样本)。
对于基于元素的N=4
计算,np.log(x)
需要10秒。我需要将这个log(x)
放在一个成本函数中进行优化,因此,所有的优化过程大约需要2小时的。
因此,问题是如何在N维数组中以更快的方式实现此log(x)
。真的有可能吗?
提前谢谢。
发布于 2018-06-17 07:04:10
也许多进程在这种情况下可以帮助你。
发布于 2018-06-17 23:07:36
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)相同。
发布于 2018-06-27 16:27:07
谢谢你们,
问题是我必须处理大量的条目。我刚刚为我的优化找到了另一个成本函数。
但是,为了提高这段代码的速度--我认为完全适合我的信号类型的自制日志表的想法可以让它工作。
https://stackoverflow.com/questions/50892030
复制相似问题