我正在尝试在PyTorch中相乘两个复杂矩阵,但似乎torch.matmul函数对于复数还未添加到PyTorch库中。
您有什么建议或者在PyTorch中相乘复杂矩阵的其他方法吗?
当前,torch.matmul
不支持像 ComplexFloatTensor
这样的复杂张量,但您可以使用以下紧凑的代码:
def matmul_complex(t1,t2):
return torch.view_as_complex(torch.stack((t1.real @ t2.real - t1.imag @ t2.imag, t1.real @ t2.imag + t1.imag @ t2.real),dim=2))
def matmul_complex(t1, t2):
m = list(t1.size())[0]
n = list(t2.size())[1]
t = torch.empty((1,n), dtype=torch.cfloat)
t_total = torch.empty((m,n), dtype=torch.cfloat)
for i in range(0,n):
if i == 0:
t_total = torch.mv(t1,t2[:,i])
else:
t_total = torch.cat((t_total, torch.mv(t1,t2[:,i])), 0)
t_final = torch.reshape(t_total, (m,n))
return t_final
我是PyTorch的新手,如果我有错误,请纠正我。
1.8.1+cu101
成功地将两个张量简单相乘,得到它们的复数积。 - Eduardo Reist1 * t2
是张量t1
和t2
之间的逐点乘法。您可以使用t1 @ t2
来获得等同于matmul_complex
的矩阵乘法。我已更新帖子。 - Gil Pinsky