[问题] 求救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