0
点赞
收藏
分享

微信扫一扫

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

眸晓 2022-04-13 阅读 63
python

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

随机种子

任何一个环节随机种子不固定,都可能导致同样的代码和参数无法跑出相同的结果,所以实验必加以下代码,并固定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版本,养成记录安装包的习惯
  • 养成保存代码版本的习惯,出现结果和之前有出入的情况,对比代码,找出原因
举报

相关推荐

0 条评论