A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A
print(B)
A+=2
print(B)
输出
tensor([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.],
[16., 17., 18., 19.]])
tensor([[ 2., 3., 4., 5.],
[ 6., 7., 8., 9.],
[10., 11., 12., 13.],
[14., 15., 16., 17.],
[18., 19., 20., 21.]])
使用B=A时,B与A公用相同地址,并未给B分配新地址
所以更改A之后,B的值也被更改。
想要使B与A是独立的两个变量,让A的更改不会影响到B的值
使用A.clone
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone() # 通过分配新内存,将A的一个副本分配给B
A+2
B
输出
tensor([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.],
[16., 17., 18., 19.]])
给B分配新地址,不更改B的值。