np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定

这篇具有很好参考价值的文章主要介绍了np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在打乱数据集的时候遇到了这样一个问题:我有两组数据集,一组是image,一组是mask(语义分割任务,与本文无关),image和mask里都是图片,且一一对应,即image里的第一张图片对应mask里的第一张图片,不能乱,因此打乱数据集的时候要对image和mask以同样的顺序打乱

比如,我有数组

a=[1,2,3,4,5]

b=["a","b","c","d","e"]

1对应“a”,2对应“b”…打乱以后,应该是(比如

a=[5,3,4,2,1]

b=["e","c","d","b","a"],1和“a”、2和“b”之间的位置仍然是对应的

np.random提供了shuffle函数,用来打乱数组。但shuffle每次打乱的顺序是随机的:np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定

这样得到的结果,第一轮1对应“b”,第二轮1对应“e”明显对应关系乱了。

本来以为shuffle会提供一个形参,对应随机种子,控制每次的打乱顺序(像train_test_split那个函数一样),但查了官网,木有,shuffle只接受一个输入参数:

np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定

 那咋办嘞?random其实还提供了seed函数,用于固定离它最近的那个函数的随机状态(并不完全准确,下面的例子会说明)。听着可能有点拗口,看下面这个例子就好理解了~

        当只添加一个seed。假设一个seed能够作用于全域,那么a和b打乱规则应相同,打乱后仍应该保持对应关系,但结果显然不是。仔细观察可以发现,其实三次shuffle(a)都是按同一规则打乱的(第三个数变为第一个,第四个数变为第二个,第一个数变为第三个,第五个数变为第四个,第二个数变为第五个)。注意,因为shuffle函数是在原数组上直接操作的,不是生成一个新的打乱的数组,因此一次shuffle(a)之后,a就变成了打乱后的样子(如图,第二次循环打乱其实也是按照上述的规则打乱的,只不过是基于第一次循环打乱的结果)。由此可见,seed成功使离其最近的shuffle(a)使用了固定的打乱规则。

        但为什么上文说,seed用于固定离它最近的那个函数的随机状态是不完全准确的呢?其实,三次shuffle(b)也是按相同的规则打乱的,但该规则不同于shuffle(a)的规则,因此,并不能保留a、b之间的对应关系。

        对比没有添加seed的结果,添加了一个seed,能够使每个shuffle保持各自的打乱规则,但不能将每个shuffle的打乱规则统一。(我对这个结果并不很理解,还望大佬指出,感谢~)

np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定

 给每个shuffle都提供一个seed,诶,这样就可以了~

也是基于这个结果,我得出(seed函数,用于固定离它最近的那个函数的随机状态)的结论,但基于上面的结果,好像这句话又不完全对,还望大佬指正~

 np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定

 文章来源地址https://www.toymoban.com/news/detail-443054.html

到了这里,关于np.random.shuffle()+random.seed()设定随机种子,多次打乱,打乱规则固定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • StableDiffusion产生随机种子(seed)并复制到剪贴板中

             随着人工智能AI的兴起,现在AI画图已经风靡全球,其中StableDiffusion以开源、可以本地部署(免费白嫖)引起了包括本人在内的打工人的兴趣。         但是每次文生图时,种子(seed)都是随机的,如果手气好,遇见个满意的图,想要继续完善,却苦于不知道种子

    2024年02月11日
    浏览(38)
  • R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器

    Package  base  version 4.2.0 .Random.seed是一个整数向量,包含R中生成随机数的随机数生成器(RNG)状态。它可以保存和恢复,但不应该被用户更改。 RNGkind是一个更友好的接口,用于查询或设置正在使用的RNG类型。 RNGversion在早期的R版本中可以用来设置随机生成器(为了再现性)。 set

    2024年02月22日
    浏览(52)
  • 【Midjourney】Midjourney 连续性人物创作 ④ ( 使用 URL + Seed 随机种子生成连续性的人物 )

    使用 URL 链接 和 Seed 随机种子 生成连续性人物 , 必须先生成一组图片 , 然后按 U 按钮 , 选择一张大图 , 之后所有的连续性人物图片都基于该图片进行生成 ; 使用 URL + Seed 随机种子生成连续性的人物创作 : url 提示词 –seed 随机种子 先执行 命令 , 生成一张图片 , 点击 U4 按钮

    2024年02月03日
    浏览(54)
  • Python,Numpy中随机抽样的函数 np.random.choice()详解

    np.random.choice() 是NumPy库中的一个函数,用于从给定的一维数组或可迭代对象中随机抽样。这个函数具有以下参数和功能: 参数 a :表示从中抽取随机样本的数组或整数。如果 a 是一个整数,则抽样将从 np.arange(a) 中进行。 size :输出样本的大小。默认情况下,返回单个值。你

    2024年02月06日
    浏览(46)
  • 【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )

    在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 merge 合并排序算法函数 用于 将 两个已排序好的容器 合并成一个新的已排序的容器 ; merge 合并排序算法 函数原型 如下 : 参数解析 : InputIterator1 first1 参数 : 有序 输入 容器 1 的 迭代器范围 的 起始迭代器 (

    2024年01月18日
    浏览(49)
  • numpy中的np.random.rand、np.random.randn、np.random.randint、np.random.uniform等用法

    随机数生成方法 1、np.random.rand(d0, d1, …, dn) np.random.rand(d0, d1, …, dn):生成一个指定形状的[0, 1)之间 均匀分布 的随机数数组。参数d0, d1, …, dn指定了生成的随机数数组的维度。 2、np.random.randn(d0, d1, …, dn) np.random.randn(d0, d1, …, dn):生成一个指定形状的**标准正态分布(**平均

    2024年02月09日
    浏览(45)
  • 详述numpy中的np.random.rand()、np.random.randn()、np.random.randint()、np.random.uniform()函数的用法

         目录  (一)np.random.rand()  (二)np.random.randn()  (三)np.random.randint(low,high,size,dtype)  (四)np.random.uniform(low,high,size)         引言:在机器学习还有深度学习中,经常会用到这几个函数,为了便于以后熟练使用,现在对这几个函数进行总结。        

    2023年04月08日
    浏览(42)
  • 【Python基础函数笔记】random.shuffle()

     官方文档:random --- 生成伪随机数 — Python 3.10.11 文档 random.shuffle()用来打乱列表的。

    2024年02月11日
    浏览(78)
  • np.random.randint

    np.random.randint 是 Numpy 库中的一个函数,用于生成随机整数。该函数的用法如下: np.random.randint(low, high=None, size=None, dtype=\\\'l\\\') 其中: low:生成的随机整数的下限(包含) high:生成的随机整数的上限(不包含) size:生成数组的形状 dtype:生成数组的数据类型 例如,以下代码生成一

    2024年02月04日
    浏览(38)
  • np.random.normal

    np.random.normal函数是numpy库中用于生成正态分布(也叫高斯分布)随机数的函数。 normal------正态 np.random.normal(loc=0.0, scale=1.0, size=None) 该函数有三个参数:loc, scale, size loc表示随机数的期望值(对应着整个分布的中心)。float ,loc=0说明这一个以Y轴为对称轴的正态分布 scale表示随机数

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包