看板 Python 關於我們 聯絡資訊
http://i.imgur.com/RVq8sWe.jpg 我現在在跑資料檢索 總共有三個for迴圈 i的大小是18000 j的大小是35000 k的大小是10 總共要對這兩段程式碼遞迴10次 現在我只跑完兩次而已 一次要8小時 作業要趕不出來了 請問有辦法提高我的運算速度嗎 python新手求解QQ ----- Sent from JPTT on my Asus ASUS_X00QD. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.46.124 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1573279281.A.391.html
yiche: Numba/ cython 11/09 14:31
sooge: numba是指用jit嗎 我試試看 謝謝 11/09 14:58
sooge: jit是不是沒辦法處理array.... 11/09 15:46
sooge: 一直報錯 11/09 15:47
f496328mm: multiprocessing 11/09 16:53
f422661: 這不是IR作業嗎 11/09 16:59
gary9630: hi 剛好有空檔想了一下 我針對你的e_step那個function 11/09 17:35
gary9630: 改成向量運算就快很多了 因為要跟你原本方法比較 18000 11/09 17:35
gary9630: 35000的量有點多 所以我用1800 3500來算 你原本的算法 11/09 17:35
gary9630: 大概是指數倍的成長 用向量的話會明顯下降 程式碼大概是 11/09 17:35
gary9630: 這樣 https://imgur.com/yFeRUiG 11/09 17:35
gary9630: 另外e_step有個小地方感覺怪怪的 就是denominator==0 11/09 17:38
gary9630: 不做normalize 設成0是只要最後一個k嗎 感覺會是全部 11/09 17:38
gary9630: 的k 如果是這樣你原本的loop k要拉上去才對優 11/09 17:38
TuCH: 看起來是用到矩陣運算 改成numpy可以變快至少100倍 11/09 17:40
gary9630: 兩種方式在我的電腦跑的時間是這樣 https://imgur.com/U 11/09 17:41
gary9630: Pj7i2S 如果有細節不清楚再站內信問我吧! 11/09 17:41
gary9630: https://imgur.com/UPj7i2S 11/09 17:41
yiche: 推g大有心 trace code 11/09 17:55
gary9630: 哈哈 不會 剛好有空就研究了一下 11/09 17:58
sooge: 謝謝g大!!!! 11/09 20:26
sooge: 然後我看不太懂你denominator那邊的意思,因為denominator 11/09 20:32
sooge: 會累加所以最後k那層跑完後只會得到一個dominator值 11/09 20:32
sooge: 喔對欸 我懂你意思了 感謝QQ 11/09 20:34