机器学习和深度学习中的种子设置
一、常见的随机数生成器及其对应的设置方法:
-
Python内置的随机数生成器:
import random random.seed(manual_seed)
-
NumPy的随机数生成器:
import numpy as np np.random.seed(manual_seed)
-
PyTorch的随机数生成器:
import torch torch.manual_seed(manual_seed)
-
CUDA的随机数生成器(在GPU环境中):
torch.cuda.manual_seed(manual_seed)
-
所有GPU的随机数生成器(在多GPU环境中):
torch.cuda.manual_seed_all(manual_seed)
-
Python的
os
模块(用于设置环境变量):import os os.environ['PYTHONHASHSEED'] = str(manual_seed)
-
Python的
hashlib
模块(用于设置哈希函数的种子):import hashlib hashlib._seed = manual_seed
-
Python的
uuid
模块(用于设置UUID生成器的种子):import uuid uuid._random._seed = manual_seed
-
Python的
datetime
模块(用于设置日期时间生成器的种子):import datetime datetime.datetime.now = lambda: datetime.datetime(2022, 1, 1)
-
Python的
time
模块(用于设置时间生成器的种子):import time time.time = lambda: 1640995200.0 # 2022-01-01 00:00:00 UTC
请注意,这些设置方法可能因Python版本和库的版本而有所不同。在实际使用中,应根据具体情况进行调整。
二、PyTorch
-
PyTorch的随机数生成器:
import torch torch.manual_seed(manual_seed)
-
PyTorch的CUDA随机数生成器(在GPU环境中):
import torch torch.cuda.manual_seed(manual_seed)
-
PyTorch的所有CUDA随机数生成器(在多GPU环境中):
import torch torch.cuda.manual_seed_all(manual_seed)
-
PyTorch的生成器:
import torch torch.Generator().manual_seed(manual_seed)
-
PyTorch的优化器随机数生成器:
import torch torch.optim.Optimizer.set_random_seed(manual_seed)
-
PyTorch的哈希函数随机数生成器:
import torch torch.utils.set_random_seed(manual_seed)
三、TensorFlow
-
TensorFlow的随机数生成器:
import tensorflow as tf tf.random.set_seed(manual_seed)
-
TensorFlow的GPU随机数生成器(在GPU环境中):
import tensorflow as tf tf.config.experimental.enable_tensor_float_32_execution(False)
-
TensorFlow的Keras随机数生成器:
import tensorflow as tf tf.keras.backend.set_random_seed(manual_seed)
-
TensorFlow的图像处理随机数生成器:
import tensorflow as tf tf.image.set_jitter_random(seed=manual_seed)
-
TensorFlow的优化器随机数生成器:
import tensorflow as tf tf.keras.optimizers.Optimizer.set_random_seed(manual_seed)
-
TensorFlow的哈希函数随机数生成器:
import tensorflow as tf tf.keras.utils.set_random_seed(manual_seed)