为了账号安全,请及时绑定邮箱和手机立即绑定

在所有模块中为 torch、随机数和 numpy 设置相同的种子

在所有模块中为 torch、随机数和 numpy 设置相同的种子

慕婉清6462132 2023-08-22 18:37:51
我试图在整个项目中设置相同的种子。以下是我在主文件中设置的参数,其中将导入所有其他模块 -seed = 42os.environ['PYTHONHASHSEED'] = str(seed)# Torch RNGtorch.manual_seed(seed)torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed)# Python RNGnp.random.seed(seed)random.seed(seed)我的项目目录如下所示 -├── Combined_Files_without_label5.csv├── __pycache__│   ├── dataset.cpython-37.pyc│   ├── datasets.cpython-37.pyc│   └── testing.cpython-37.pyc├── datasets.py├── import_packages│   ├── __init__.py│   ├── __pycache__│   │   ├── __init__.cpython-37.pyc│   │   ├── dataset.cpython-37.pyc│   │   ├── dataset_class.cpython-37.pyc│   │   ├── dataset_partition.cpython-37.pyc│   │   └── visualising.cpython-37.pyc│   ├── dataset_class.py│   ├── dataset_partition.py│   └── visualising.py├── main.py现在的问题是我正在从中导入模块,dataset_partition.py并且该函数需要seed那里的值。例如-    df_train, df_temp, y_train, y_temp = train_test_split(X,                                                      y,                                                      stratify=y,                                                      test_size=(1.0 - frac_train), # noqa                                                      random_state=seed) 现在,我的问题是, 1)如果我只是从上述语句中删除参数,那么它会从我的主文件中获取种子吗?如果没有,那么如何设置呢? 2)所有其他需要种子的函数(例如 , )是否都会以相同的方式运行?(如果不是,那么如何解决它)random_statetorch.manual.seedtorch.cuda.manual_seed(seed)
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

1)如果我只是从上面的语句中删除 random_state 参数,那么它会从我的主文件中获取种子吗?

是的,正如默认 ( ) 值的文档None所述:

使用 numpy.random 中的全局随机状态实例。多次调用该函数将重用同一个实例,并会产生不同的结果。

我想当您使用它时__init__,它将在您使用包中的任何其他功能之前运行,并且没问题。

2)所有其他需要种子的函数(如 torch.manual.seed、torch.cuda.manual_seed(seed))是否会以相同的方式运行?

是的,这些将为 Python 和 PyTorch 设置全局种子以供使用,您在这里也可以。


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信