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