每次训练结果不一致的原因:
神经网络特意用随机性来保证,能通过有效学习得到问题的近似函数。采用随机性的原因是:用它的机器学习算法,要比不用它的效果更好。
在神经网络中,最常见的随机性包含以下几个地方:
-
初始化的随机性,比如权值
-
正则化的随机性,比如dropout
-
层的随机性,比如词嵌入
-
最优化的随机性,比如随机优化
解决方案:设置随机数字生成器的种子
1)设置 Torch 的随机种子为固定值,可以保证每次运行网络的时候相同输入的输出是固定的
SEED = 42
torch.manual_seed(SEED)
2)设置这个 flag 为True,每次返回的卷积算法将是确定的
torch.backends.cudnn.deterministic = True
3)设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的问题
torch.backends.cudnn.benchmark = False
把该设置代码放在文件的开头处即可
SEED = 42
torch.manual_seed(SEED)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
【题外话】
世界杯:
世界上最高荣誉、最高规格、最高竞技水平、最高知名度的足球比赛,与奥运会并称为全球体育两大最顶级赛事,甚至是影响力和转播覆盖率超过奥运会的全球最大体育盛事,世界足球运动发展推广普及的源头和根本,所以也被誉为“生命之杯”
意义:
全球各个国家在足球领域最梦寐以求的神圣荣耀,也是各个国家所有足球运动员的终极梦想,它也被誉为“生命之杯”,代表着足球界至高无上的荣誉与球迷世界的狂欢。振兴民族精神,足球运动蕴涵着深入透彻的文化和思想内涵,其影响已远远超出其本身的竞技运动范畴,关系到地区或国家的形象,重要国际比赛的成功,能振奋民族精神,激发人们爱国热情