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)

 

 

 

 

 

posted @ 2020-08-04 21:06  肃木易  阅读(4127)  评论(0编辑  收藏  举报