簡體   English   中英

Python獲取N維數組對數的更快方法

[英]Python faster way to take logarithm of N-dimensional array

我的問題很瑣碎,但是我需要您的幫助。 取一個數組的np.log(x)沒問題。 但是在我的情況下,該數組可以是N維/張量( N=2..1024 ,每個維中有100個樣本)。

對於N=4按元素計算np.log(x)需要10秒 我需要將此log(x)放在成本函數中進行優化,因此,所有優化過程大約需要2個小時

因此,問題是如何針對N維數組以更快的方式實現此log(x) 真的有可能嗎?

提前致謝。

也許多處理可以幫助您解決這種情況

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)相同。

多謝你們,

問題是我需要處理大量條目。 我剛剛找到了另一個成本函數進行優化。

但是,為了精確地加快此代碼的速度-我認為完全針對我的信號類型使用自制日志表的想法可以使其工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM