时间:2021-01-18 14:43:47 | 栏目:Python代码 | 点击:次
在pytorch中,Tensor是以引用的形式存在的,故而并不能直接像python交换数据那样
a = torch.Tensor(3,4) a[0],a[1] = a[1],a[0] # 这会导致a的结果为a=(a[1],a[1],a[2]) # 而非预期的(a[1],a[0],a[2])
这是因为引用赋值导致的,在交换过程,如下所示,当b的值赋值与a的时候,因为tmp指针与a是同一变量的不同名,故而tmp的内容也会变为b。
# 交换a,b a,b = b,a # 等价于 tmp = a a = b #此时,tmp = a= b b = tmp
故而在我们通过另外一种方式来对其进行交换,通过对下标索引的方式,对其进行交换
a = torch.Tensor(3,4) index = [1,0,2] a = a[index]