var = [[0, 1, -4, 8],
[2, -3, 2, 1],
[5, -8, 7, 1]]
var = torch.Tensor(var)
Run Code Online (Sandbox Code Playgroud)
这里,var是一个 3 x 4 (2d) 张量。如何交换第一行和第二行以获得以下二维张量?
2, -3, 2, 1
0, 1, -4, 8
5, -8, 7, 1
Run Code Online (Sandbox Code Playgroud)
另一个答案不起作用,因为某些维度在复制之前被覆盖:
>>> var = [[0, 1, -4, 8],
[2, -3, 2, 1],
[5, -8, 7, 1]]
>>> x = torch.tensor(var)
>>> index = torch.LongTensor([1, 0, 2])
>>> x[index] = x
>>> x
tensor([[ 0, 1, -4, 8],
[ 0, 1, -4, 8],
[ 5, -8, 7, 1]])
Run Code Online (Sandbox Code Playgroud)
对我来说,创建一个新的张量(具有单独的底层存储)来保存结果就足够了:
>>> x = torch.tensor(var)
>>> index = torch.LongTensor([1, 0, 2])
>>> y = torch.zeros_like(x)
>>> y[index] = x
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用(遵循discuss.pytorch.orgindex_copy_中的解释),尽管我目前没有看到这两种方式的优点。
| 归档时间: |
|
| 查看次数: |
10999 次 |
| 最近记录: |