将PyTorch变量复制到Numpy数组

时间:2018-03-08 17:22:01

标签: numpy deep-learning pytorch tensor

假设我在GPU中有一个PyTorch变量:

var = Variable(torch.rand((100,100,100))).cuda()

将此变量复制(不是桥接)到NumPy数组的最佳方法是什么?

var.clone().data.cpu().numpy()

var.data.cpu().numpy().copy()

通过运行快速基准测试,.clone()略快于.copy()。但是,.clone() + .numpy()将创建PyTorch变量和NumPy桥,而.copy()将创建NumPy桥+ NumPy数组。

2 个答案:

答案 0 :(得分:3)

这是一个非常有趣的问题。据我说,这个问题基于意见,我想就此发表意见。

从上述两种方法中,我更倾向于第一种方法(使用clone())。由于您的目标是复制信息,因此基本上您需要投入额外的内存。 clone()copy()应该占用相同数量的存储量,因为创建numpy bridge不会导致额外的内存。另外,我不明白你的意思,copy()会创建两个numPy数组。正如您所提到的,clone()copy()快,我在使用clone()时没有看到任何其他问题。

如果有人可以提供一些反驳论点,我很想再考虑一下。

答案 1 :(得分:0)

因为clone()recorded by AD,所以第二种选择不太激烈。您可能还会考虑few options