在一个TextRNN的LSTM深度学习demo代码中,发现了这几行代码。
np.random.seed(1)
torch.manual_seed(1)
torch.cuda.manual_seed_all(1)
torch.backends.cudnn.deterministic = True # 保证每次结果一样
在机器学习中,某些操作如参数初始化、数据处理会依赖随机性,使用随机种子可以确保每次运行时的随机数序列相同,方便调试、实验结果复现和验证都非常重要。
np.random.seed(1) 设置numpy的随机种子为1
torch.manual_seed(1):设置了 PyTorch 的随机种子为 1
torch.cuda.manual_seed_all(1):设置了 PyTorch 在 GPU 上的随机种子为 1
torch.backends.cudnn.deterministic = True:设置了 PyTorch 使用 cuDNN 库时的行为为确定性模式
随机种子(random seed)是在随机数生成过程中用于初始化伪随机数生成器的起始值,相同的种子下,生成的随机数序列将是确定性的。
有感而发:日常中的赌博游戏,会不会存在一种由庄家制定好的规则,看似随机性,实际程序已经掌握了所有的种子,知道每一步发展的趋势,而游戏中的人的任何操作引发下一步结果也都是在掌握之中的。庄家制定的局,绝不会是亏本买卖。游戏赌博都是极短时间内的心理博弈,而处于穷困中的人更加容易丧失理智。