[問題] 求救python程式加速

看板Python作者 (喜歡小女友Yerin )時間4年前 (2019/11/09 14:01), 編輯推噓4(4020)
留言24則, 6人參與, 4年前最新討論串1/1
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

11/09 14:31, 4年前 , 1F
Numba/ cython
11/09 14:31, 1F

11/09 14:58, 4年前 , 2F
numba是指用jit嗎 我試試看 謝謝
11/09 14:58, 2F

11/09 15:46, 4年前 , 3F
jit是不是沒辦法處理array....
11/09 15:46, 3F

11/09 15:47, 4年前 , 4F
一直報錯
11/09 15:47, 4F

11/09 16:53, 4年前 , 5F
multiprocessing
11/09 16:53, 5F

11/09 16:59, 4年前 , 6F
這不是IR作業嗎
11/09 16:59, 6F

11/09 17:35, 4年前 , 7F
hi 剛好有空檔想了一下 我針對你的e_step那個function
11/09 17:35, 7F

11/09 17:35, 4年前 , 8F
改成向量運算就快很多了 因為要跟你原本方法比較 18000
11/09 17:35, 8F

11/09 17:35, 4年前 , 9F
35000的量有點多 所以我用1800 3500來算 你原本的算法
11/09 17:35, 9F

11/09 17:35, 4年前 , 10F
大概是指數倍的成長 用向量的話會明顯下降 程式碼大概是
11/09 17:35, 10F

11/09 17:35, 4年前 , 11F
11/09 17:35, 11F

11/09 17:38, 4年前 , 12F
另外e_step有個小地方感覺怪怪的 就是denominator==0
11/09 17:38, 12F

11/09 17:38, 4年前 , 13F
不做normalize 設成0是只要最後一個k嗎 感覺會是全部
11/09 17:38, 13F

11/09 17:38, 4年前 , 14F
的k 如果是這樣你原本的loop k要拉上去才對優
11/09 17:38, 14F

11/09 17:40, 4年前 , 15F
看起來是用到矩陣運算 改成numpy可以變快至少100倍
11/09 17:40, 15F

11/09 17:41, 4年前 , 16F
兩種方式在我的電腦跑的時間是這樣 https://imgur.com/U
11/09 17:41, 16F

11/09 17:41, 4年前 , 17F
Pj7i2S 如果有細節不清楚再站內信問我吧!
11/09 17:41, 17F

11/09 17:41, 4年前 , 18F

11/09 17:55, 4年前 , 19F
推g大有心 trace code
11/09 17:55, 19F

11/09 17:58, 4年前 , 20F
哈哈 不會 剛好有空就研究了一下
11/09 17:58, 20F

11/09 20:26, 4年前 , 21F
謝謝g大!!!!
11/09 20:26, 21F

11/09 20:32, 4年前 , 22F
然後我看不太懂你denominator那邊的意思,因為denominator
11/09 20:32, 22F

11/09 20:32, 4年前 , 23F
會累加所以最後k那層跑完後只會得到一個dominator值
11/09 20:32, 23F

11/09 20:34, 4年前 , 24F
喔對欸 我懂你意思了 感謝QQ
11/09 20:34, 24F
文章代碼(AID): #1TnbOnEH (Python)