為什麼這篇python全部加#鄉民發文收入到精華區:因為在python全部加#這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者doasgloria (青柳立夏)看板Python標題[問題] 多個矩陣做點對點乘法再相加怎樣最...
現在想要做的是
假設有矩陣 A,B,C,...J共約10個
要與同樣數量shape的矩陣a,b,c,...,j
每個shape大約是 (3500,2500,3)
做 A*a + B*b + C*c +...+ J*j
點對點相乘再全部加總
所以出來的結果也是一個(3500,2500,3)的矩陣
該怎麼做最快呢 @_@"
type都是numpy array,嘗試了幾種方法
1. 直接使用np multiply方法再相+
當然這是最慢的, 要好多秒
2. 使用numexpr把"A*a+B*b+.."的算式寫在evaluate裡面
這個很強 快超多 大概30%以上 但還是不夠快
3. 使用Cupy
這個當然是最快的 可是存在一個問題
我把20個矩陣用cp.array()轉到cupy
計算完後用cp.asnumpy()轉回來
這兩個過程滿耗時的 加起來又比上面兩個慢了 Q.Q
目前嘗試了上面三種方法 都沒辦法達到理想的速度
假設在 i5-7400CPU , 16G記憶體 , 1050Ti的GPU上
有方法可以達到一秒鐘計算50次 甚至100次嗎 ??
希望版上的計算達人們指教還是小蛇的小魯 >///<
--
◤ | █ ヽ █ ◥ ▂▃▄▃▂ 回戰文 疾如風
▍˙▆ 八███████▃▃▄ ●火 ◇ 風● 發廢文 繁如林
▋˙●◤█◤ノ ヽ◥ ‧▋ ●◇ ◇● 挑釁文 嗆如火
◥___ █◤ ● ● ██◣ ●山◇林● 宅在家不動如山
◢█ ██◤ ( _●_) ミ█◣ 彡 甲斐の熊-武田熊玄
◢▇▇▊█▼ |∪| ◢█ ◣_█◢◢ ◤、● 原SotaFujimor 改marubom
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.58.106 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1586228873.A.1CC.html