Python PyTorch:PyTorch中的numpy.linalg.multi_dot()等价物是什么
我试图在PyTorch中执行多个矩阵的矩阵乘法,我想知道PyTorch中的Python PyTorch:PyTorch中的numpy.linalg.multi_dot()等价物是什么,python,numpy,pytorch,matrix-multiplication,Python,Numpy,Pytorch,Matrix Multiplication,我试图在PyTorch中执行多个矩阵的矩阵乘法,我想知道PyTorch中的numpy.linalg.multi_dot()的等价物是什么 如果没有,那么在PyTorch中,下一个最好的方法(在速度和内存方面)是什么 代码: 非常感谢 ~~看起来可以将张量发送到多点~~ 看起来numpy实现将所有内容都强制转换到numpy阵列中。如果你的张量在cpu上并且分离,这应该可以工作。否则,到numpy的转换将失败 因此,总的来说,很可能没有其他选择。我认为你最好的办法是使用多点实现,例如,调整它以处理张
numpy.linalg.multi_dot()
的等价物是什么
如果没有,那么在PyTorch中,下一个最好的方法(在速度和内存方面)是什么
代码:
非常感谢 ~~看起来可以将张量发送到多点~~ 看起来numpy实现将所有内容都强制转换到numpy阵列中。如果你的张量在cpu上并且分离,这应该可以工作。否则,到numpy的转换将失败
因此,总的来说,很可能没有其他选择。我认为你最好的办法是使用
多点
实现,例如,调整它以处理张量/跳过转换为numpy。考虑到类似的界面和代码的简单性,我认为这应该是非常简单的。我需要在GPU中运行代码,所以我不认为我可以在GPU中使用任何numpy函数,对吗?是的-只是在GPU上用张量再次尝试,但它不起作用(更新了答案)…是的,这不会自动选择最佳顺序(我想对于三个矩阵,如果需要的话,手动操作应该不会很痛苦。)好的,非常感谢@Yuri Feldman。当我有时间的时候,我会把它作为一个小型项目放在我的待办事项列表中,为PyTorch做贡献:)multidot
仅在阵列形状不同时才有用,一个计算顺序更快。multidot
与A@B@C
?
import numpy as np
import torch
A = np.random.rand(3, 3)
B = np.random.rand(3, 3)
C = np.random.rand(3, 3)
results = np.linalg.multi_dot(A, B, C)
A_tsr = torch.tensor(A)
B_tsr = torch.tensor(B)
C_tsr = torch.tensor(C)
# What is the PyTorch equivalent of np.linalg.multi_dot()?