pytorch以及tensorflow设置随机数种子seed
首先设置任意种子:
SEED=666
对于pytorch
torch.manual_seed(SEED)
torch.cuda.manual_seed_all(SEED)
np.random.seed(SEED)
random.seed(SEED)
torch.backends.cudnn.deterministic = True
tensorflow在使用gpu时由于cudnn中分配GPU多线程的随机问题,复现结果需要NVIDIA官方的一个tensorflow gpu库,支持tf版本1.14-2.x(参考 https://github.com/NVIDIA/framework-determinism)
先shell安装库:
pip install tensorflow-determinism
对于tensorflow 1.14 或 1.15:
from tfdeterminism import patch
patch()
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.set_random_seed(SEED)
对于tensorflow 2.0:
from tfdeterminism import patch
patch()
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.random.set_seed(SEED)
对于tensorflow 2.4:
os.environ['TF_DETERMINISTIC_OPS'] = '1'
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.random.set_seed(SEED)