[問題] 求救python程式加速

作者: sooge (老衲)   2019-11-09 14:01:13
http://i.imgur.com/RVq8sWe.jpg
我現在在跑資料檢索
總共有三個for迴圈
i的大小是18000
j的大小是35000
k的大小是10
總共要對這兩段程式碼遞迴10次
現在我只跑完兩次而已 一次要8小時 作業要趕不出來了
請問有辦法提高我的運算速度嗎
python新手求解QQ
作者: yiche (你若安好,便是晴天)   2019-11-09 14:31:00
Numba/ cython
作者: sooge (老衲)   2019-11-09 14:58:00
numba是指用jit嗎 我試試看 謝謝jit是不是沒辦法處理array....一直報錯
作者: f496328mm (為什麼會流淚)   2019-11-09 16:53:00
multiprocessing
作者: f422661 (恩恩)   2019-11-09 16:59:00
這不是IR作業嗎
作者: gary9630   2019-11-09 17:35:00
hi 剛好有空檔想了一下 我針對你的e_step那個function改成向量運算就快很多了 因為要跟你原本方法比較 1800035000的量有點多 所以我用1800 3500來算 你原本的算法大概是指數倍的成長 用向量的話會明顯下降 程式碼大概是這樣 https://imgur.com/yFeRUiG另外e_step有個小地方感覺怪怪的 就是denominator==0不做normalize 設成0是只要最後一個k嗎 感覺會是全部的k 如果是這樣你原本的loop k要拉上去才對優
作者: TuCH (謬客)   2019-11-09 17:40:00
看起來是用到矩陣運算 改成numpy可以變快至少100倍
作者: gary9630   2019-11-09 17:41:00
兩種方式在我的電腦跑的時間是這樣 https://imgur.com/UPj7i2S 如果有細節不清楚再站內信問我吧!https://imgur.com/UPj7i2S
作者: yiche (你若安好,便是晴天)   2019-11-09 17:55:00
推g大有心 trace code
作者: gary9630   2019-11-09 17:58:00
哈哈 不會 剛好有空就研究了一下
作者: sooge (老衲)   2019-11-09 20:26:00
謝謝g大!!!!然後我看不太懂你denominator那邊的意思,因為denominator會累加所以最後k那層跑完後只會得到一個dominator值喔對欸 我懂你意思了 感謝QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com