深度学习影响算法复现性的因素记录

深度学习影响算法复现性的因素记录,第1张

浅记一下做实验以来发现的对算法复现性有影响的一些因素,后序继续补充,争取少走弯路!

随机种子

任何一个环节随机种子不固定,都可能导致同样的代码和参数无法跑出相同的结果,所以实验必加以下代码,并固定seed:

def set_seed(seed):
    os.environ['PYTHONHASHSEED'] =str(seed)
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
pytorch版本

之前因为服务器的问题在实验过程中根据cuda修改了pytorch的安装版本,导致代码跑出了完全不同的新结果(懊恼了很久!)大概就是cuda10.1对应的torch切到cuda11.1对应的torch就导致了实验结果的不同,后来通过重新装回原来版本的torch复现出了之前的结果。


所以,实验要养成记录环境所有安装包版本的习惯!

一些可有可无的初始化

最近的发现,我的代码中,只因为类的初始化中多了一个初始化函数(一个比较大的函数,但是在实验中并没有用到它,只是初始化了一下),就导致结果不同。


相当于说,在实验中由于忘删了一行用不到但是初始化了的函数(这个函数比较大),而导致结果有出入,这一点以后也要注意一下。


总结
  • 固定随机种子
  • 实验过程中不要随意切换torch版本,养成记录安装包的习惯
  • 养成保存代码版本的习惯,出现结果和之前有出入的情况,对比代码,找出原因

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/580307.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存