首页 > 解决方案 > 每次运行(使用 pytorch+cuda)在批量标准化时都是不同的,即使是在 RNG 播种的情况下

问题描述

当没有批量规范层的模型执行相同时,为什么我的具有批量规范层的模型在每次运行时表现不同。在我的模型中,随机种子由以下人员设置:

np.random.seed(args.seed)
torch.manual_seed(args.seed)
random.seed(args.seed)
torch.cuda.manual_seed_all(args.seed)
os.environ['PYTHONHASHSEED'] = str(args.seed)

在删除批量规范层并维护其他设置后,我的模型产生了相同的结果。

标签: pythonpytorchbatch-normalization

解决方案


看来您还需要包括以下行:

torch.backends.cudnn.deterministic = True

为了强制算法的 cuda 部分在 PyTorch 的批处理规范中具有确定性。这里有更多细节


推荐阅读