目录
4.1 比如我们想保存过程值时,使用直接保存,可以看到列表中的值是完全错误的
1. 直接赋值
import torch
t1 = torch.ones(3, 3)
t2 = t1
t1[:, 2] = 2
print(f"id(t1) = id(t1)")
print(f"id(t2) = id(t2)")
print(f"t1 = {t1}")
print(f"t2 = {t2}")
输出:
可以看到t1和t2的地址是一样的,改变t1的值,t1的值也随之改变
id(t1) = 1955897835832
id(t2) = 1955897835832
t1 = tensor([[1., 1., 2.],
[1., 1., 2.],
[1., 1., 2.]])
t2 = tensor([[1., 1., 2.],
[1., 1., 2.],
[1., 1., 2.]])
2. 使用clone()函数
import torch
t1 = torch.ones(3, 3)
t2 = t1.clone()
t1[:, 2] = 2
print(f"id(t1) = {id(t1)}")
print(f"id(t2) = {id(t2)}")
print(f"t1 = {t1}")
print(f"t2 = {t2}")
输出:
可以看到t2的地址改变