我已经尝试过这个问题中描述的解决方案:How to check if two Torch tensors or matrices are equal?
出于某种原因我没有任何运气。
我只是想测试我的随机数种子的再现性作为例子:
def seed_everything(seed):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) # for cases of multiple gpus
torch.backends.cudnn.deterministic = True
seed_everything(4321)
a = torch.rand(1, 3)
print(f"Tensor a: {a}")
a_expect = torch.tensor([[0.1255, 0.5377, 0.6564]])
print(f"Tensor a_expect: {a_expect}")
equal = torch.equal(a, a_expect)
print(f"torch.equal: {equal}")
eq = torch.eq(a, a_expect)
print(f"torch.eq: {eq}")
close = torch.allclose(a, a_expect)
print(f"torch.allclose: {close}")
diff = torch.all(torch.lt(torch.abs(torch.add(a, -a_expect)), 1e-12))
print(f"torch.all(lt(abs(add,1e-12))): {diff}")
输出
Tensor a: tensor([[0.1255, 0.5377, 0.6564]])
Tensor a_expect: tensor([[0.1255, 0.5377, 0.6564]])
torch.equal: False
torch.eq: tensor([[False, False, False]])
torch.allclose: False
torch.all(lt(abs(add,1e-12))): False
(我用的是pytorch 1.12.1,我的机器是apple M1 mac)
感谢您提供任何线索