我正在运行一个具有相同种子的脚本,并且我发现连续运行的结果是重复的,但是在几天之后,使用相同的种子运行相同的脚本会改变输出结果。我只得到了短期的可重复性,这很奇怪。为了实现可重复性,我的脚本已经包含以下语句:
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
torch.use_deterministic_algorithms(True)
random.seed(args.seed)
np.random.seed(args.seed)
torch.manual_seed(args.seed)
我还检查了训练Dataloader使用的RandomSampler创建的实例ID序列,该序列在多次运行间是保持不变的。同时在数据加载器中设置num_workers=0。导致输出改变的可能原因是什么?