如何解决在所有模块中为火炬,随机数和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.seed
,torch.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 举报,一经查实,本站将立刻删除。