关于随机种子random.seed()测试 pytorch完全设置随机种子

本文详细介绍了如何在Python中使用随机种子来确保实验结果的可重复性。包括在不同库如PyTorch、NumPy和标准库中的随机模块设置随机种子的方法,并解释了设置随机种子的作用范围及如何正确设置以实现实验结果的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试:
这里写图片描述这里写图片描述这里写图片描述
可以看到random.seed()对于import的文件同样有用。而且当你设置一个随机种子时,接下来的随机算法生成数按照当前的随机种子按照一定规律生成。也就是一个随机种子就能重现随机生成的序列。


这里写图片描述这里写图片描述这里写图片描述
当把随机种子设置在b文件import a之后,seed种子无法对之前的随机算法产生作用。


这里写图片描述这里写图片描述这里写图片描述
随机种子作用域在设置时到下一次设置时。要想重复实验结果,设置同样随机种子即可。


这里写图片描述这里写图片描述这里写图片描述
在b.py import a 之前设置随机种子将会对a同样产生影响。

关于pytorch:

torch.manual_seed(7) # cpu
torch.cuda.manual_seed(7) #gpu
np.random.seed(7) #numpy
random.seed(7) #random and transforms
torch.backends.cudnn.deterministic=True # cudnn

def worker_init_fn(worker_id):   # After creating the workers, each worker has an independent seed that is initialized to the curent random seed + the id of the worker
    np.random.seed(7 + worker_id)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=args.batch_size, shuffle=True,
                                           num_workers=args.workers, pin_memory=True, worker_init_fn=worker_init_fn)

val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=args.batch_size, shuffle=False,
                                         num_workers=args.workers, pin_memory=True, worker_init_fn=worker_init_fn)
def worker_init_fn(worker_id):                                                          
    np.random.seed(np.random.get_state()[1][0] + worker_id)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值