训练模型训练结果可重现
在模型开发的过程中,由于默认的随机的参数初始化策略,每一次训练损失下降的曲线都是由些许差异的,这种情况下,无法判断自己的优化是否有效,这个时候就需要设置随机种子了,让训练结果可重现。
-
第一步是在程序启动前设置
PYTHONHASHSEED
环境变量为0
(不能在 python 脚本中设置) -
更进一步的是,当在 GPU 中运行时,因为在 GPU 中很多操作是并行的,所以顺序是不一定的,这个时候简单的做法是,禁用 GPU 让代码跑在 CPU 上。禁用 GPU 就是设置环境变量
CUDA_VISIBLE_DEVICES
为空字符串。 -
接下来是设置常见的几个框架的随机种子
import numpy as np import tensorflow as tf import random as python_random # 设置 Python 的随机种子 python_random.seed(123) # 设置 Numpy 的随机种子 np.random.seed(123) # 设置 TensorFlow 的随机种子 # 详见: https://www.tensorflow.org/api_docs/python/tf/random/set_seed tf.random.set_seed(1234) # 设置 PyTorch 的随机种子 torch.manual_seed(1) torch.cuda.manual_seed_all(1) torch.backendss.cudnn.determistic = True
参考