什么是随机种子?

随机种子是针对 随机方法 而言的。

随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是 基于生成随机数来实现的。在深度学习中,比较常用的随机方法的应用有:网络的随机初始化训练集的随机打乱 等。

举个例子,如果我们简单调用 random.random() 来生成随机数,那么每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好随机种子基于这个种子来执行随机算法,这个时候我们 得到的随机数序列是相同的

随机种子的工作原理(计算机底层是如何实现生成随机数的)?

虽然计算机很擅长做精确计算,但是它们处理随机事件时非常不靠谱。

实际上,计算机中的所有随机数都是 伪随机数,是靠 随机数算法 生成的,随机数算法其实就是在努力创造一种 呈均匀分布且难以预测的 数据序列。

所有的随机数算法在初始化阶段都需要一个 随机“种子”(random seed),完全相同的种子每次将产生相同的“随机”数序列。如果我们没有手动进行显式设置,系统则 默认根据时间来选择这个值,此时每次生成的随机数因时间差异而不同。

随机种子的一些使用特性

① 随机种子的取值范围?

可以是任意数字,如10,1000

② 随机种子的作用范围

np.random.seed(0)
print(np.random.rand(3))
print(np.random.rand(3))

输出:

[0.5488135  0.71518937 0.60276338]
[0.54488318 0.4236548  0.64589411]

再次运行程序,会输出同一组随机数:

[0.5488135  0.71518937 0.60276338]
[0.54488318 0.4236548  0.64589411]

想要在同一个程序中产生同一组随机数,需要在下一个函数前设置一个相同的随机种子

np.random.seed(0)
print(np.random.rand(3))
np.random.seed(0)
print(np.random.rand(3))

输出:

[0.5488135  0.71518937 0.60276338]
[0.5488135  0.71518937 0.60276338]

为什么需要随机种子?

打个比方,在机器学习,深度学习算法中,我们往往会用到随机向量,随机矩阵,这使得我们每次运行算法计算出来的结果是不一致的,会为我们调试算法带来麻烦。

基于随机种子来实现代码中的随机方法,能够 保证多次运行此段代码能够得到完全一样的结果,即保证结果的 可复现性,这样 别人跑你的代码的时候也能够很好地复现出你的结果


PyTorch 中随机种子的设置方法

[参考资料]:Pytorch设置随机数种子,使训练结果可复现。

在使用 PyTorch 时,如果希望通过设置随机数种子,在 GPU 或 CPU 上固定每一次的训练结果,则需要在程序执行的开始处添加以下代码:

def setup_seed(seed):torch.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)torch.backends.cudnn.deterministic = True
# 设置随机数种子
setup_seed(20)
# 预处理数据以及训练模型
# ...
# ...

随机数种子seed确定时,模型的训练结果将始终保持一致。

Python 随机种子介绍,PyTorch 中随机种子的设置与应用相关推荐

  1. python随机数种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  2. python中随机种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用

    随机种子是什么? 随机种子是针对 随机方法 而言的. 随机方法:常见的随机方法有 生成随机数,以及其他的像 随机排序 之类的,后者本质上也是基于生成随机数来实现的.在深度学习中,比较常用的随机方法的应 ...

  3. python权重是什么意思_在python带权重的列表中随机取值的方法

    1 random.choice python random模块的choice方法随机选择某个元素 foo = ['a', 'b', 'c', 'd', 'e'] from random import ...

  4. python从26个字母中随机挑选5个_【习题之Python篇】习题6

    1. 求任意给定的数值列表中的最小值. 不可使用min函数,要求使用两种方法解决, 其中一种方法要求使用reduce()函数解决. 第一种 L=[1,2,3,4,5,6] t=L[0] #先存放一个最 ...

  5. 简单介绍pytorch中分布式训练DDP使用 (结合实例,快速入门)

    文章目录 DDP原理 pytorch中DDP使用 相关的概念 使用流程 如何启动 torch.distributed.launch spawn调用方式 针对实例voxceleb_trainer多卡介绍 ...

  6. python url模块介绍_python 中 urlparse 模块介绍

    urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...

  7. php如何随机显示图片,php中随机显示图片的函数代码_php

    /********************************************** * Filename : img.php * Author : freemouse http://www ...

  8. pytorch中Parameter()介绍

    用法介绍  pytorch中的Parameter函数可以对某个张量进行参数化.它可以将不可训练的张量转化为可训练的参数类型,同时将转化后的张量绑定到模型可训练参数的列表中,当更新模型的参数时一并将其更 ...

  9. pytorch中的数据加载(dataset基类,以及pytorch自带数据集)

    目录 pytorch中的数据加载 模型中使用数据加载器的目的 数据集类 Dataset基类介绍 数据加载案例 数据加载器类 pytorch自带的数据集 torchvision.datasets MIN ...

最新文章

  1. 第二十次CCF计算机软件能力认证总结
  2. 10 款基于 jQuery 的切换效果插件推荐
  3. spark sql定义RDD、DataFrame与DataSet
  4. 【C语言】全局变量、本地变量、静态本地变量(书写规范代码,正确定义变量,防止未知错误)
  5. python安装的模块在pycharm中能用吗_pycharm安装python模块
  6. 什么是云原生?聊聊云原生的今生(转)
  7. js中WINDOW对象
  8. 例2.4 Day of Week - 九度教程第7题(日期类问题)
  9. c语言自学的视频,最适合自学的C语言自学视频
  10. “跟技术Leader聊了10分钟,我就猜到下周要发生重大宕机事故!”
  11. 【neo4j】docker容器化安装
  12. idm 2019 中文版下载
  13. Vue:自定义组件引入单页面+动态绑定图片
  14. Yo(Yeoman)
  15. 一致性hash算法虚拟节点解决方案
  16. 为什么你要拒绝我(苹果AppStore被拒理由大全)
  17. Java读取图片文件
  18. HTML期末大作业~花店鲜花商城网站模板设计与实现(HTML+CSS+JavaScript)
  19. ssm+java计算机毕业设计信息溯源管理系统7msmp(程序+lw+源码+远程部署)
  20. Golang 单引号、双引号和反引号

热门文章

  1. powerbi 服务主体认证
  2. 2019/6/14 乐檬-Java后端开发实习
  3. 浅析即时通讯音视频开发多人实时音视频聊天架构
  4. 4种PPT保护的取消方法
  5. 我在赶集网的两个月(完整版),互联网营销
  6. ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)
  7. 初见Python解题之道(九)
  8. 关于java的输入输出
  9. linux创建swap分区
  10. java基础~重写与重载