python&pytorch 随机种子简述

本文介绍了随机种子在Python和PyTorch中的作用,如何通过设置随机种子来复现随机数序列。在Python的random模块中,未指定种子时会根据系统时间生成随机数,而设置种子后可复现随机序列。PyTorch中,由于算法的随机性,即使设置了种子也可能无法完全复现结果,需要关注所有涉及随机性的部分。固定随机种子对于实验复现至关重要,但也会限制模型训练的多样性,因此在实际应用中可能需要每次使用不同的种子以寻找更好的结果。
摘要由CSDN通过智能技术生成

 

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

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)
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值