本文簡要介紹 python 語言中 numpy.linalg.multi_dot
的用法。
用法:
linalg.multi_dot(arrays, *, out=None)
在單個函數調用中計算兩個或多個數組的點積,同時自動選擇最快的評估順序。
multi_dot
鏈接numpy.dot
並使用矩陣的最佳括號[1] [2]。根據矩陣的形狀,這可以大大加快乘法速度。如果第一個參數是一維的,則將其視為行向量。如果最後一個參數是一維,則將其視為列向量。其他參數必須是二維的。
將
multi_dot
視為:def multi_dot(arrays): return functools.reduce(np.dot, arrays)
- arrays: 數組 序列
如果第一個參數是一維,則將其視為行向量。如果最後一個參數是一維,則將其視為列向量。其他參數必須是二維的。
- out: ndarray,可選
輸出參數。這必須具有在未使用時將返回的確切類型。特別是,它必須具有正確的類型,必須是C-contiguous,並且它的 dtype 必須是要返回的 dtype點(a,b).這是一個性能特征。因此,如果不滿足這些條件,則會引發異常,而不是嘗試靈活處理。
- output: ndarray
返回所提供數組的點積。
參數:
返回:
注意:
矩陣乘法的成本可以使用以下函數計算:
def cost(A, B): return A.shape[0] * A.shape[1] * B.shape[1]
假設我們有三個矩陣 。
兩種不同括號的成本如下:
cost((AB)C) = 10*100*5 + 10*5*50 = 5000 + 2500 = 7500 cost(A(BC)) = 10*100*50 + 100*5*50 = 50000 + 25000 = 75000
參考:
例子:
multi_dot
允許您編寫:>>> from numpy.linalg import multi_dot >>> # Prepare some data >>> A = np.random.random((10000, 100)) >>> B = np.random.random((100, 1000)) >>> C = np.random.random((1000, 5)) >>> D = np.random.random((5, 333)) >>> # the actual dot multiplication >>> _ = multi_dot([A, B, C, D])
代替:
>>> _ = np.dot(np.dot(np.dot(A, B), C), D) >>> # or >>> _ = A.dot(B).dot(C).dot(D)
相關用法
- Python numpy linalg.matrix_rank用法及代碼示例
- Python numpy linalg.matrix_power用法及代碼示例
- Python numpy linalg.svd用法及代碼示例
- Python numpy linalg.pinv用法及代碼示例
- Python numpy linalg.eigh用法及代碼示例
- Python numpy linalg.tensorinv用法及代碼示例
- Python numpy linalg.LinAlgError用法及代碼示例
- Python numpy linalg.solve用法及代碼示例
- Python numpy linalg.det用法及代碼示例
- Python numpy linalg.cond用法及代碼示例
- Python numpy linalg.inv用法及代碼示例
- Python numpy linalg.eig用法及代碼示例
- Python numpy linalg.lstsq用法及代碼示例
- Python numpy linalg.norm用法及代碼示例
- Python numpy linalg.slogdet用法及代碼示例
- Python numpy linalg.tensorsolve用法及代碼示例
- Python numpy linalg.qr用法及代碼示例
- Python numpy linalg.cholesky用法及代碼示例
- Python numpy linalg.eigvals用法及代碼示例
- Python numpy linalg.eigvalsh用法及代碼示例
- Python numpy linspace用法及代碼示例
- Python numpy lib.NumpyVersion用法及代碼示例
- Python numpy lib.Arrayterator用法及代碼示例
- Python numpy legendre.legint用法及代碼示例
- Python numpy laguerre.lagone用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.linalg.multi_dot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。