随机种子是什么?

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

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

关于python中的随机种子——random_state

举个例子,如果我们简单调用 random.random() 来生成随机数,那么每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好随机种子,基于这个种子来执行随机算法,这个时候我们得到的随机数序列是相同的【实际上,所有的随机算法都需要提供随机种子,如果我们没有手动进行显式设置,系统则默认 根据时间 来选择这个值,此时每次生成的随机数因时间差异而不同】。

随机种子的一些具体特性

① 随机种子的取值范围?

可以是任意数字,如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]

思考

1、使用了随机种子来固定输出,那还能算是随机吗?

2、计算机底层是如何实现生成随机数的?

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

随机数是一个难题。大多数随机数算法都努力创造一种 呈均匀分布且难以预测的 数据序列,但是在算法初始化阶段都需要提供随机数“种子”(random seed)。而完全相同的种子每次将产生相同的“随机”数序列,因此 用系统时间作为数序列生成的起点,会让程序运行的时候更具有随机性。

为什么要用随机种子?

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

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确定时,模型的训练结果将始终保持一致。(加v 一起学习 hailou1666)

python随机数种子怎么用_Python 随机种子介绍,PyTorch 中随机种子的设置应用相关推荐

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

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

  2. Python 随机种子介绍,PyTorch 中随机种子的设置与应用

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

  3. python xlrd模块下载_python xlrd模块介绍

    转载自:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 一.安装xlrd模块 到python官网下载 二.使用介绍 1.导入 ...

  4. python有哪些码_Python字节码介绍

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 了解Python字节码是什么,Python如何使用它来执行代码,以及了解它可以帮我们干什么. 如果你曾经编 ...

  5. python 数据框缺失值_Python:处理数据框中的缺失值

    python 数据框缺失值 介绍 (Introduction) In the last article we went through on how to find the missing value ...

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

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

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

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

  8. python的threading库_python标准库介绍——31 threading 模块详解

    threading 模块 (可选) ``threading`` 模块为线程提供了一个高级接口, 如 [Example 3-1 #eg-3-1] 所示. 它源自 Java 的线程实现. 和低级的 ``t ...

  9. random是python标准库吗_python标准库介绍——27 random 模块详解

    ==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...

最新文章

  1. Javascript绘图
  2. php字符串类型讲解
  3. 数据录入工作,使用VBA
  4. 软考高项之进度管理——攻坚记忆
  5. swift 项目_如何对iOS项目进行静态分析
  6. C++Pascal‘s Triangle杨辉三角的实现算法
  7. 黑科技揭秘:如何通过阿里云超算,使得汽车仿真效率提升25%
  8. 网络电话全民亲情祝福 中秋团圆新方式
  9. redis数据类型list总结
  10. 简单的RPC java实现
  11. 时间的正则表达式验证
  12. thinkserver TS250安装centos7.5经验
  13. Hibernate入门第一讲——Hibernate框架的快速入门
  14. 【Proteus仿真】基于STC15单片机简易数码管定时器时钟
  15. Spring中Junit测试启动报错class path resource [xxx.xml] cannot be opened because it does not exist
  16. 【数据结构与算法】- 排序(算法)
  17. 使用Nginx Upstream 部署 OpenERP
  18. 解决直接读取webapp下的文件404问题
  19. 阮一峰:值得分享给开发者的 Authing 身份云
  20. 家用计算机cpu,家用电脑低功耗CPU推荐

热门文章

  1. js利用tab键切换当前页面_js小技巧:tab页切换
  2. PRML第八章之图模型
  3. Create and Drop Database, Create, Alter and Drop Tables, Select, Insert, Update, Delete Commands
  4. 超详细的MySQL入门教程(一)
  5. Cadence软件包工具及功能介绍
  6. 编译原理(第3版-王生原)课后习题答案-第三章
  7. MATLAB卷积运算解释(conv、conv2、convn)
  8. 十天学习Unity3D脚本(一)九个回调
  9. 如何利用网站源码快速建站
  10. arduinohanshu_Arduino基础-函数 (范例)