如何更新Tensor?

时间:2017-11-14 14:08:36

标签: python pytorch

我使用前一个更新张量时遇到了一些麻烦。 我的问题:让我假设我有一个张量x1 [Nx1]和一个通过前一个x2 [Nx1]计算的新张量。现在,我想更新x2小于x1的元素。我正在使用dtype=torch.cuda.FloatTensor

  

这是Python中的直接代码:

import numpy as np
...
index     = np.where(x1 > x2)
x2[index] = x1[index]
  

为什么我可以使用PyTorch dtype=torch.cuda.FloatTensor来执行此操作?   如果x1更改为[NxD]

谢谢!

1 个答案:

答案 0 :(得分:2)

代码看起来与numpy非常相似:

x2

使用一些预定义的数组并打印x1 = torch.from_numpy(np.array([1, 2, 3, 4, 5])).float().cuda() x2 = torch.from_numpy(np.array([3, 3, 3, 3, 3])).float().cuda()

x1 = torch.from_numpy(np.array([[1, 2, 5], [1, 4, 5]])).float().cuda()
x2 = torch.from_numpy(np.array([[3, 3, 3], [3, 3, 3]])).float().cuda()
  

3 3 3 4 5   [大小为5的torch.cuda.FloatTensor(GPU 0)]

NxN维度张量的代码相同。使用:

{{1}}
  

3 3 5
  3 4 5   [torch.cuda.FloatTensor,大小为2x3(GPU 0)]