pytorch在固定随机数种子后训练神经网络得到的结果仍然不一样

在训练一个分类器的时候最前面加入了一下代码固定随机数种子,但是每次重复实验得到的结果还是都不一样。

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

这句话可以提高模型的运行效率,但是也是这个原因导致了每次的结果不一样
去掉之后完美解决结果无法复现的问题

你可能感兴趣的:(机器学习,pytorch,神经网络,随机种子)