Keras神经网络重启内核后无法复现训练结果的问题排查
TensorFlow/Keras重启Jupyter内核后训练结果无法复现的解决方案
环境配置
- Python 3.11
- Keras 2.12.0
- CPU版TensorFlow 2.12.1
问题现象
在Jupyter Notebook中训练神经网络时,每次重启内核后重新拟合模型,训练结果都会出现差异;但不重启内核时重复执行训练流程,结果完全一致。
已尝试的无效措施
按照Keras官方文档及社区相关方案做了以下操作,但重启内核后仍无法复现结果:
- 给NumPy、TensorFlow、Python内置
random模块均设置了固定随机种子 - 手动指定模型权重的初始化方式,确保初始权重一致
- 开启TensorFlow的操作确定性模式(
tf.config.experimental.enable_op_determinism()) - 确认数据加载逻辑、训练测试集划分完全无随机变动
- 验证每次重启内核后,模型初始权重均保持相同
最终解决方案
问题根源在于PYTHONHASHSEED的设置方式——必须将其配置为系统级环境变量,而非仅在代码内部通过os.environ['PYTHONHASHSEED']设置。
具体设置方式
- Windows系统:打开系统环境变量设置面板,新增
PYTHONHASHSEED变量,将值设为任意固定整数(如42),保存后重启Jupyter Notebook - Linux/macOS系统:启动Jupyter前先在终端执行
export PYTHONHASHSEED=42,再启动Notebook;若需永久生效,可将该命令添加至.bashrc或.zshrc等shell配置文件中
完成上述设置后,每次重启Jupyter内核并重新训练模型,即可得到完全一致的训练结果。
内容的提问来源于stack exchange,提问作者Marco Pellizzari
相关产品推荐
相关产品推荐

