PyTorch 纪录片说,当使用 cuDNN 作为卷积的后端时,必须设置两个选项以使实现具有确定性。选项是
torch.backends.cudnn.deterministic = True
和torch.backends.cudnn.benchmark = False
。这是因为权重的初始化方式吗?
当
torch.backends.cudnn.deterministic
设置为True
时,CuDNN将对这些操作使用确定性算法,这意味着给定相同的输入和参数,输出将始终相同。这在需要结果重现性的情况下非常有用,例如调试或比较不同模型架构时。
但是,使用确定性算法可能会以性能为代价,因为一些使 CuDNN 快速的优化可能与确定性不兼容。因此,将 torch.backends.cudnn.deterministic 设置为 True 可能会导致训练时间变慢。