本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。