pytorch设置随机种子

SEED = 1
​
​
def set_seed(seed=1):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
​
​
set_seed(SEED)  

这段代码是用来设置随机数种子的,目的是为了保证实验的可复现性。随机数种子是用来生成随机数序列的初始值,如果不设置种子,每次运行代码时,随机数序列都会不同,导致实验结果不一致。如果设置了固定的种子,那么每次运行代码时,随机数序列都会相同,实验结果也就可以复现。这段代码中,SEED = 1表示设置种子为1,然后分别调用random, numpy, torch和torch.cuda的seed函数来设置各自的随机数生成器的种子为1。

种子为1是指随机数种子的值是1,也就是说,随机数生成器的初始状态是由1决定的。你可以把种子想象成一个密码,如果你知道了密码,你就可以解开随机数序列的规律,如果你不知道密码,你就无法预测随机数序列的下一个数。种子为1只是一个例子,你也可以设置其他的值作为种子,只要保证每次运行代码时使用相同的种子,就可以复现实验结果。

  • random是Python自带的标准库,它可以生成各种类型的随机数,如整数,浮点数,字符串,列表等。它的随机数生成器是基于Mersenne Twister算法的,它是一个伪随机数生成器,也就是说,它的随机数序列是有规律的,只是很难预测。random模块主要用于一般的编程任务,如模拟,测试,游戏等。

  • numpy是一个科学计算库,它提供了高效的多维数组操作和线性代数,傅里叶变换,统计等功能。numpy.random是numpy的一个子模块,它可以生成各种分布的随机数,如均匀分布,正态分布,泊松分布等。它的随机数生成器也是基于Mersenne Twister算法的,但是它可以设置不同的种子来创建不同的随机数生成器实例。numpy.random主要用于科学计算和数据分析的任务,如机器学习,深度学习等。

  • torch是一个深度学习框架,它提供了强大的张量计算和自动求导功能。torch也有一个torch.random子模块,它可以生成各种分布的随机数,如均匀分布,正态分布,泊松分布等。它的随机数生成器也是基于Mersenne Twister算法的,但是它可以设置不同的设备来创建不同的随机数生成器实例。torch.random主要用于深度学习的任务,如神经网络的初始化,正则化,数据增强等。

我刚才已经简单介绍了这三个模块的不同应用场景和功能,可以参考以下的例子来进一步理解:

  • 如果你想生成一个随机的密码,你可以使用random模块,如:

import random
import string
password = "".join(random.choices(string.ascii_letters + string.digits, k=8))
print(password)
  • 如果你想生成一个服从正态分布的1000个随机数,并绘制它们的直方图,你可以使用numpy.random模块,如:

import numpy as np
import matplotlib.pyplot as plt
data = np.random.normal(0, 1, 1000)
plt.hist(data, bins=20)
plt.show()
  • 如果你想初始化一个神经网络的权重,并在GPU上进行训练,你可以使用torch.random模块,如:

import torch
import torch.nn as nn
model = nn.Linear(10, 1)
model.weight.data = torch.randn(1, 10, device="cuda")
model.to("cuda")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值