[爆卦]python全部加#是什麼?優點缺點精華區懶人包

為什麼這篇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
TuCH: 所以還差兩個數量級嗎? 04/07 12:12
doasgloria: 沒有細算 但是用方法2 大概0.12秒做完一次 04/07 12:36
doasgloria: 理想的話 希望加快10倍 0.012秒一次就達到目標了 ! 04/07 12:37
watashino: 算法的部分直接轉成3d array,兩個乘完再按照第三個dim 04/07 12:57
watashino: ension加就好了吧,但可能在gpu上加速才有感 04/07 12:57
LiloHuang: numba 可以試試 04/07 21:20
napyang: 推樓上的numba,速度真的快很多。 04/08 17:53
mike0227: 這運算是卡在頻寬 丟去GPU不會比較快 除非資料本來就在 04/11 00:42

你可能也想看看

搜尋相關網站