Pytorch 生成随机种子到种子的最佳实践?

Pytorch 生成随机种子到种子的最佳实践?,pytorch,Pytorch,我真正想要的是为数据集和数据加载器种子。我正在改编以下代码: 有人知道如何正确播种吗?在Pytorch中播种东西的最佳实践是什么 老实说,我不知道是否有一个特定算法的方式为GPU与CPU。我最关心的是一般的pytorch,并确保我的代码是“真正随机的”。特别是当它使用GPU的时候我想 相关的: 我的答案已被删除,以下是其内容: 我不知道这是否是pytorch的最佳选择,但这似乎是任何编程语言的最佳选择: 通常,在任何编程语言中都可以得到的最佳随机样本是通过操作系统生成的。在Py

我真正想要的是为数据集和数据加载器种子。我正在改编以下代码:

有人知道如何正确播种吗?在Pytorch中播种东西的最佳实践是什么

老实说,我不知道是否有一个特定算法的方式为GPU与CPU。我最关心的是一般的pytorch,并确保我的代码是“真正随机的”。特别是当它使用GPU的时候我想


相关的:


我的答案已被删除,以下是其内容:

我不知道这是否是pytorch的最佳选择,但这似乎是任何编程语言的最佳选择:


通常,在任何编程语言中都可以得到的最佳随机样本是通过操作系统生成的。在Python中,您可以使用操作系统模块:

random\u data=os.urandom(4)

通过这种方式,您可以获得加密安全的随机字节序列,您可以将其转换为数字数据类型以用作种子

seed=int.from\u字节(随机数据,byteorder=“big”)

编辑:代码片段仅适用于Python 3


''' 如果大于4,则会出现以下错误:

ValueError:种子必须介于0和2**32-1之间 '''

RAND_SIZE=4看一看

这就是我用的

def seed_everything(seed=42):
  random.seed(seed)
  os.environ['PYTHONHASHSEED'] = str(seed)
  np.random.seed(seed)
  torch.manual_seed(seed)
  torch.backends.cudnn.deterministic = True
  torch.backends.cudnn.benchmark = False

最后两个参数(cudnn)用于GPU

什么是ur
seed=42
do?这就是我们想要它表现出确定性的时候吗?注意,我实际上想要的是提供种子作为可选输入,然后当它是确定性的,但当它不是给定的时候,随机地表现并让操作系统选择它…或者至少这是我现在所拥有的。是的,种子被用作种子,让你的结果可以通过不同的运行进行复制。您可以将其更改为生成不同的半随机数。您可以将seed=None作为默认参数,如果seed不为None,则使用if仅执行代码块。您能否告诉我们(他们有专门用于此的页面)对此不清楚?我可以建议一个公关来让它更清楚,但我现在看不出有任何问题。@Berriel似乎从我发布的答案来看,我想做的是得到一个“真实”的随机数。不是关于再现性,但我发现我还需要其他东西,我会更新/让你知道。