为什么设置随机种子不能在运行中提供相同的性能?
Why doesn't setting random seed give same performance across runs?
我正在使用 pytorch
训练一些深度学习模型,其中还包括 numpy
的用法。由于随机化不是真正随机的,而是 伪随机 ,为什么 不同的 运行s[= 中的数字(即准确度等)不相同? 18=]?
我的意思是,即使我没有设置一些随机种子,也应该有一些默认的随机种子,我的代码必须根据这些随机种子 运行 并在不同的 运行 中给出相同的结果。还有更多吗?
我认为真正随机与伪随机的讨论在这里无关紧要。可能会根据日期和时间等因素生成不同的数字,这就是为什么您应该设置种子。
如果涉及到 PyTorch 和 CUDA,事情会变得有点复杂。 Here 是一篇讨论随机性和再现性的文章。
简而言之,您需要为 numpy + PyTorch 设置种子,并将后端设置为确定性操作。
我正在使用 pytorch
训练一些深度学习模型,其中还包括 numpy
的用法。由于随机化不是真正随机的,而是 伪随机 ,为什么 不同的 运行s[= 中的数字(即准确度等)不相同? 18=]?
我的意思是,即使我没有设置一些随机种子,也应该有一些默认的随机种子,我的代码必须根据这些随机种子 运行 并在不同的 运行 中给出相同的结果。还有更多吗?
我认为真正随机与伪随机的讨论在这里无关紧要。可能会根据日期和时间等因素生成不同的数字,这就是为什么您应该设置种子。
如果涉及到 PyTorch 和 CUDA,事情会变得有点复杂。 Here 是一篇讨论随机性和再现性的文章。
简而言之,您需要为 numpy + PyTorch 设置种子,并将后端设置为确定性操作。