在训练一个分类器的时候最前面加入了以下代码固定随机数种子,但是每次重复实验得到的结果还是都不一样。
def seed_torch(seed=0):
random.seed(seed)
np.random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
最后发现是在主函数里面,定义模型之后加入了
cudnn.benchmark = True
这句话可以提高模型的运行效率,但是也是这个原因导致了每次的结果不一样
去掉之后完美解决结果无法复现的问题