1. 为什么你的深度学习模型每次训练结果都不一样?
每次跑完深度学习模型,你是不是也遇到过这种情况:同样的代码、同样的数据,第一次训练准确率85%,第二次变成78%,第三次又变成82%?这种"薛定谔的准确率"让很多开发者头疼不已。其实问题的根源往往出在一个看似不起眼的小东西上——随机数种子。
想象你正在玩一个抽卡游戏,每次抽卡的结果都是随机的。但如果游戏开发者告诉你:"其实每次抽卡的结果都是按照固定顺序排列的,只是起点不同",你是不是突然觉得这个随机过程变得可控了?随机数种子就是这个"起点"。
在Python中,如果不设置随机数种子,程序会默认用系统时间作为种子值。这就是为什么每次运行结果都不同——因为时间在不断变化。而当我们固定种子后,就像给随机过程按下了暂停键,确保每次生成的随机数序列完全相同。
import random
# 不设置种子
print(random.random()) # 每次输出不同
print(random.random()) # 每次输出不同
# 设置固定种子
random.seed(42)
print(random.random()) # 永远输出0.6394267984578837
random.seed(42)
print(random.random()) # 再次输出0.6394267984578837
2. 随机数种子在深度学习中的五大关键作用
2.1 确保实验结果可复现
科研论文中最尴尬的事情莫过于:你报告了一个惊艳的结果,但其他研究者无法复现。在ICLR 2020会议上,有研究指出超过70%的AI论文存在复现性问题,其中随机性控制不当是主要原因之一。
固定随机数种子可以确保:
- 相同的初始权重
- 相同的数据划分
- 相同的训练样本顺序
- 相同的dropout神经元选择
这样无论你在哪台机器、什么时候运行代码,只要种子相同,结果就会一致。我在参与一个图像分割项目时,就曾因为没固定种子


459

被折叠的 条评论
为什么被折叠?



