简述python&pytorch 随机种子的实现

 更新时间:2020年10月07日 13:52:15   作者:夕夕老师  
这篇文章主要介绍了简述python&pytorch 随机种子的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机数广泛应用在科学研究, 但是计算机无法产生真正的随机数, 一般成为伪随机数. 它的产生过程: 给定一个随机种子(一个正整数), 根据随机算法和种子产生随机序列. 给定相同的随机种子, 计算机产生的随机数列是一样的(这也许是伪随机的原因).

随机种子是什么?

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

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

随机种子的取值范围?

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

python random

下面以python的random函数为例, 做了一个测试.

在这里插入图片描述

当用户未指定随机种子, 系统默认随机生成, 一般与系统当前时间有关.用户指定随机种子后, 使用随机函数产生的随机数可以复现.种子确定后, 每次使用随机函数相当于从随机序列去获取随机数, 每次获取的随机数是不同的.

pytorch

使用pytorch复现效果时, 总是无法做到完全的复现. 同一份代码运行两次, 有时结果差异很大. 这是由于算法中的随机性导致的. 要想每次获得的结果一致, 必须固定住随机种子. 首先, 我们需要找到算法在哪里使用了随机性, 再相应的固定住随机种子.

def seed_torch():
	seed = 1024 # 用户设定
 # seed = int(time.time()*256)
 # 保存随机种子
 with open('seed.txt', 'w') as f:
  f.write(str(seed))
 random.seed(seed)
 os.environ['PYTHONHASHSEED'] = str(seed)
 np.random.seed(seed)
 torch.manual_seed(seed)
 torch.cuda.manual_seed(seed)
 torch.cuda.manual_seed_all(seed)
 torch.backends.cudnn.benchmark = False
 torch.backends.cudnn.deterministic = True
seed_torch()

上面的代码固定了pytorch常用的随机种子, 但是如果你在预处理中涉及了随机性, 也需要固定住.

为了复现结果, 我们固定住了随机种子. 但pytorch训练模型时, 不同的随机种子会产生不同的结果. 每次使用固定的随机种子, 可能错失好的结果. 为此, 我们可以每次使用不一样的随机种子, 并保存下来

 到此这篇关于简述python&pytorch 随机种子的实现的文章就介绍到这了,更多相关pytorch 随机种子内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你编译pjsip源码的方法

    教你编译pjsip源码的方法

    通过本文教大家如何编译pjsip源码,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-10-10
  • Django rest framework jwt的使用方法详解

    Django rest framework jwt的使用方法详解

    这篇文章主要介绍了Django rest framework jwt的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python OpenCV实现传统图片格式与base64转换

    Python OpenCV实现传统图片格式与base64转换

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,本文主要介绍了Python OpenCV实现传统图片格式与base64转换,感兴趣的可以参考一下
    2021-06-06
  • pygame游戏之旅 添加碰撞效果的方法

    pygame游戏之旅 添加碰撞效果的方法

    这篇文章主要为大家详细介绍了pygame游戏之旅的第7篇,教大家如何添加碰撞的效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python入门教程(七)Python数字类型

    Python入门教程(七)Python数字类型

    这篇文章主要介绍了Python入门教程(七)Python数字类型,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • 使用Python打造高效多进程TCP服务器

    使用Python打造高效多进程TCP服务器

    这篇文章主要为大家详细介绍了如何使用Python实现多进程的TCP服务器,通过为每个连接进来的客户端分配一个进程,实现并发处理多个客户端请求的能力,感兴趣的可以了解下
    2024-01-01
  • 关于Python的异常捕获和处理

    关于Python的异常捕获和处理

    程序在运行过程当中,不可避免的会出现一些错误,比如:使用了没有赋值过的变量,使用了不存在的索引,一个数字除以0,这些错误在程序中,我们称其为异常,那么如何处理这些异常呢,今天我们就来看一看
    2023-04-04
  • Python代码调试的几种方法总结

    Python代码调试的几种方法总结

    这篇文章主要介绍了Python代码调试的几种方法总结,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
    2015-04-04
  • python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法

    python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法

    这篇文章主要介绍了python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • django框架自定义用户表操作示例

    django框架自定义用户表操作示例

    这篇文章主要介绍了django框架自定义用户表操作,结合实例形式分析了Django框架自定义用户表替换自带的user表具体操作步骤与相关使用技巧,需要的朋友可以参考下
    2018-08-08

最新评论