微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在所有模块中为火炬,随机数和numpy设置相同的种子

如何解决在所有模块中为火炬,随机数和numpy设置相同的种子

我试图在整个项目中设置相同的种子。 以下是我在主文件中设置的参数,所有其他模块都将在其中导入-

seed = 42
os.environ['PYTHONHASHSEED'] = str(seed)
# Torch RNG
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
# Python RNG
np.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)如果我只是从上述语句中删除random_state参数,那么它将从我的主文件获取种子吗?
如果不是,那么如何设置吗?
2)所有其他需要种子的功能(如torch.manual.seedtorch.cuda.manual_seed(seed)也会以相同的方式运行吗?(否则,该如何解决

解决方法

1)如果我只是从上述声明中删除random_state参数 那会从我的主文件中获取种子吗?

是的,默认值(arr的{​​{3}}表示:

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

我想您将在None中使用它,它将在您从软件包中使用的任何其他功能之前运行,并且还可以。

2)是否执行所有其他需要种子的功能 像torch.manual.seed一样,torch.cuda.manual_seed(seed)的行为 用同样的方式?

是的,这些将为Python和PyTorch设置要使用的全局种子,您在这里也很好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。