我使用前一个更新张量时遇到了一些麻烦。
我的问题:让我假设我有一个张量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]
谢谢!
答案 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)]