gpt4 book ai didi

python - 如何在 Torch 张量中交换两行?

转载 作者:行者123 更新时间:2023-12-04 03:11:30 26 4
gpt4 key购买 nike

var = [[0, 1, -4, 8],
[2, -3, 2, 1],
[5, -8, 7, 1]]

var = torch.Tensor(var)

在这里, var是一个 3 x 4 (2d) 张量。如何交换第一行和第二行以获得以下二维张量?
2, -3, 2, 1 
0, 1, -4, 8
5, -8, 7, 1

最佳答案

other answer不起作用,因为某些维度在复制之前会被覆盖:

>>> 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]])
对我来说,创建一个新的张量(具有单独的底层存储)来保存结果就足够了:
>>> x = torch.tensor(var)
>>> index = torch.LongTensor([1, 0, 2])
>>> y = torch.zeros_like(x)
>>> y[index] = x
或者,您可以使用 index_copy_ (遵循 discuss.pytorch.org 中的解释),尽管目前我认为这两种方式都没有优势。

关于python - 如何在 Torch 张量中交换两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44935176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com