You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch张量比较不匹配问题:随机种子复现验证异常

PyTorch张量相等性验证失败排查

我尝试过Stack Overflow问题《How to check if two Torch tensors or matrices are equal?》中的所有解决方案,但均未成功。我以验证随机数种子的复现性为场景,编写了如下代码:

import numpy as np
import os
import random
import torch

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,降级到1.10.2后问题依旧。

更新:我发现问题在于张量打印时数值被截断,将随机张量转为列表后,显示出其真实值与预期值存在精度差异:

values = a.tolist()
print(f"Tensor values: {values}")

输出为:

Tensor values: [0.1255376935005188, 0.5376683473587036, 0.6563868522644043]

内容的提问来源于stack exchange,提问作者slashdottir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:45:15