美文网首页
随机种子

随机种子

作者: 三方斜阳 | 来源:发表于2021-04-10 14:15 被阅读0次

随机性:

深度学习的一个项目,其中的随机性会非常的大,比如以下因素:

  • 随机生成的模型参数,
  • 可能是随机选取的训练样本顺序
  • 随机dropout

这些并非坏事,因为随机性会让我们的模型更加的健壮,提高泛化性能,但是在另一些阶段,希望模型性能稳定,然后才能得到明显的对比,比如:

  • 调整一些超参数
  • 改进模型结构
  • 优化算法

在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果,当得到比较好的结果时我们通常希望这个结果是可以复现的,在pytorch中,通过设置随机数种子可以达到这个目的。

def set_seed(args):
    random.seed(args.seed)
    np.random.seed(args.seed)
    torch.manual_seed(args.seed)#为CPU设置随机种子
    if args.n_gpu > 0:
        torch.cuda.manual_seed_all(args.seed)#为GPU设置随机种子
    else:
        torch.cuda.manual_seed(args.seed)#单GPU设置
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
    torch.backends.cudnn.enabled = False
  • torch.backends.cudnn.deterministic = True和下述的benchmark搭配使用,确定卷积算法的类型。
  • torch.backends.cudnn.benchmark = False是cudnn使用确定性卷积,而不是使用优化提速型的卷积
    (这个的意思是cudnn在开始时会对模型的每个卷积层使用合适的卷积算法加速,由于卷积网络的kernel大小,数量,计算方式等等,选用合适的卷积算法会使得后续计算加快) 速度会慢,但是可复现
  • torch.backends.cudnn.enabled = False 直接不使用cudnn底层加速。

如果使用多个GPU,应该使用torch.cuda.manual_seed_all()为所有的GPU设置种子。
在需要生成随机数据的实验中,每次实验都需要生成数据。设置随机种子是为了确保每次生成固定的随机数,这就使得每次实验结果显示一致了,有利于实验的比较和改进。

  • 并且通过设置随机种子之后,同样可以影响到 网络中 dropout 的随机性,pytorch answer
  • 还有就是数据加载的时候 Dataloader 的 shuffle=False 的参数设置,等等。

相关文章

  • random库

    seed()给随机数一个种子值,,默认随机种子是系统时钟。 随机种子相同,随机数相同。伪随机数。 random()...

  • Python笔记:Numpy常用方法-2

    Numpy随机函数 # 指定随机数种子,相同的随机数种子,生成相同的随机数 np.random.seed(10) ...

  • PyTorch/Tensorflow设置随机种子 ,保证结果复现

    Pytorch随机种子设置 Tensorflow设置随机种子 第一步 仅导入设置种子和初始化种子值所需的那些库 第...

  • random随机函数

    import random seed([1]) #随机数种子要每次产生随机数相同就要设置种子,相同种子数的Ran...

  • 随机种子

    每次运行这段代码生成的随机数都是相同的5个数,见下方: 当将np.random.seed(5)注释掉后,每次运行代...

  • 随机种子

    前言 从入职到现在一直在使用随机数,只知道在使用随机数时,需要先设置一下随机种子,但却不知道为什么要这么做,知其然...

  • 随机种子

    随机性: 深度学习的一个项目,其中的随机性会非常的大,比如以下因素: 随机生成的模型参数,可能是随机选取的训练样本...

  • set.seed()函数

    set.seed():该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。如果不设定种子,生成的随机数...

  • JAVA安全与加密

    一. 随机数 随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。...

  • 2019-03-25

    random 随机函数的使用 需要掌握的能力 能够使用随机种子产生“确定”的随机数 能够产生随机整数 能够序列列表...

网友评论

      本文标题:随机种子

      本文链接:https://www.haomeiwen.com/subject/rwcnkltx.html