设置训练过程中的随机数种子

4 阅读2分钟

先看代码:

    # 设置 cpu 和 gpu 两种环境中的随机种子
    base_seed = 1337
    torch.manual_seed(base_seed)
    torch.cuda.manual_seed(base_seed)
  1. 设置基础随机种子

    base_seed = 1337
    
    • 这行代码定义了一个变量 base_seed,并将其值设置为 1337。这个值将作为后续随机种子的基准。
  2. 设置 PyTorch 的随机种子

    torch.manual_seed(base_seed)
    
    • torch.manual_seed() 是 PyTorch 中用于设置全局随机种子的函数。通过设置随机种子,可以确保在训练过程中,所有基于随机数的操作(如权重初始化、数据随机采样等)都能产生相同的随机数序列,从而保证训练结果的可重复性。
    • 这里使用 base_seed 作为随机种子,确保每次运行代码时,PyTorch 的随机数生成器都从相同的状态开始。
  3. 设置 CUDA 的随机种子

    torch.cuda.manual_seed(base_seed)
    
    • torch.cuda.manual_seed() 是 PyTorch 中用于设置 CUDA 设备上的随机种子的函数。与 torch.manual_seed() 类似,它确保在涉及 GPU 的操作中,随机数的生成也是可重复的。
    • 由于深度学习训练通常在 GPU 上进行,因此设置 CUDA 的随机种子是确保训练过程可重复性的重要步骤。

总结

通过设置随机种子,确保深度学习模型在训练过程中的随机操作是可重复的。这对于实验的可重复性和调试非常重要。具体来说:

  • base_seed 定义了随机种子的值。
  • torch.manual_seed() 设置了 PyTorch 的全局随机种子。
  • torch.cuda.manual_seed() 设置了 CUDA 设备上的随机种子。

通过设置随机数种子,可以确保每次运行代码时,模型的初始化和训练过程都基于相同的随机数序列,从而得到一致的结果。