如何在Pytorch中将张量转换为复数类型?

4

我希望能够使用Pytorch进行一些量子力学计算,其中的数量有时是复数。我想知道如何将现有的实数张量转换为复数类型。

2个回答

8

PyTorch确实支持复数,请参考这里

尝试一下:

import torch

a = torch.tensor([1.0, 2.0], dtype=torch.double)
b = a.type(torch.complex64)

尝试一下,会得到这样的消息:"RuntimeError: 不支持复杂数据类型。" 这是在Pytorch 1.5中出现的。也许在夜间版本中已经实现了? - larspars
@larspars,你的代码是什么?我认为在1.5.0中打印功能还没有准备好。现在你应该避免直接打印变量。 - xuhdev
通过挖掘PyTorch的问题,似乎在以前支持构建复杂张量,但由于支持的操作非常少,因此他们将其删除了。不过他们正在努力解决这个问题。 - larspars
@larspars 嗯,这在 PyTorch 1.4 上是有效的,所以也许他们出现了回归问题。但是最新版的夜间版本可以顺利运行上面的代码(加上张量打印)而没有问题。 - xuhdev

3
据我所知,PyTorch不支持复数张量。
您可以使用两个实数表示一个复数张量。但是,您需要实现所有相关的基本算术运算以支持这些复数张量。
然而,有一个严重的承诺要将这一重要功能添加到PyTorch中,并且似乎是一个非常活跃的问题。(参见此链接)

这太令人悲伤了。 - Vladimir Vargas
@VladimirVargas 这很令人难过,但你应该保持乐观 - Shai
你好,对于当前版本(V1.7)仍然有效吗?因为我注意到引入了一个名为torch.angle的函数,用于处理复数值。 - zwep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接