Pytorch 无法使用hyperopt复制从hyperparameter调优获得的结果

Pytorch 无法使用hyperopt复制从hyperparameter调优获得的结果,pytorch,random-seed,seeding,reproducible-research,hyperopt,Pytorch,Random Seed,Seeding,Reproducible Research,Hyperopt,我已经建立了一个Pytorch模型,并使用Hyperopt库执行了hyperparameters调优。尽管我已经在每次运行开始时调用了下面的种子设定函数,但获得的结果是不可复制的: util.py Trainer.py 进一步检查后,我发现hyperopt调谐的第一个结果始终是可复制的,但随后的运行并非如此。这对我来说是出乎意料的,因为我已经在train函数的开头调用了seed_everthing() 此外,如果我按照以下方式进行培训: for i in range(2):

我已经建立了一个Pytorch模型,并使用Hyperopt库执行了hyperparameters调优。尽管我已经在每次运行开始时调用了下面的种子设定函数,但获得的结果是不可复制的:

util.py

Trainer.py

进一步检查后,我发现hyperopt调谐的第一个结果始终是可复制的,但随后的运行并非如此。这对我来说是出乎意料的,因为我已经在train函数的开头调用了seed_everthing()

此外,如果我按照以下方式进行培训:

    for i in range(2):
        print ("in iteration ", i)
        trainer = Trainer(**configs)
        trainer.train(params)
迭代1和2的结果彼此不同,但它们总是相同的(即迭代1总是给出1.31714的列_损失,而迭代2总是给出4.31235)


我希望迭代1和迭代2会给出相同的结果,因为它应该是可复制的。

只是一个健全的检查:当您进行hyperopt时,您是否在每次迭代中从头开始重建模型(或继续训练相同的模型)?类似地,在hyperopt调优之后,您是否在每次迭代中重建模型?
    def train(self, params):
        util.seed_everything()
        #wrote my training code here

    for i in range(2):
        print ("in iteration ", i)
        trainer = Trainer(**configs)
        trainer.train(params)