亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 numpy 高效計算多個點積

使用 numpy 高效計算多個點積

MM們 2022-07-05 17:10:07
我正在嘗試有效地計算許多點積。這篇文章非常接近我想要做的事情,但我無法讓它發揮作用。我有一個大的矩陣列表(a)和一個向量列表(b)。我想在他們之間做一系列的點積運算。這就是現在的工作:import numpy as npa # shape (15000,4,4)b # shape (15000,4)out = np.empty((15000,4))for i in range(15000):    out[i] = np.dot(a[i],b[i])我從鏈接的帖子中調整 np.tensordot 或 np.einsum 的所有嘗試都未能給我想要的東西。如果有人知道如何做到這一點,我將不勝感激。
查看完整描述

1 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

愛因斯坦求和工作得很好:


>>> a = np.random.randn(100, 4, 4)

>>> b = np.random.randn(100, 4)

>>> foo = np.einsum('ijk,ik->ij', a, b)

>>> bar = np.zeros_like(foo)

>>> for i, (ai, bi) in enumerate(zip(a, b)):

        bar[i] = np.dot(ai, bi)

>>> np.allclose(foo, bar)

True

為了稍微解釋一下總和,請注意您正在收縮. b因此,您可以考慮將每個內積視為按np.einsum('jk,k->j', a[0], b[0]). 但是我們對aand的每個元素都做一個b,因此包含了第一個軸,它沒有收縮。因此,ijk,ik->ij。


查看完整回答
反對 回復 2022-07-05
  • 1 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號