神经网络算法利用了随机性,比如初始化随机权重,因此用同样的数据训练同一个网络会得到不同的结果。
初学者可能会有些懵圈,因为算法表现得不太稳定。但实际上它们就是这么设计的。随机初始化可以让网络通过学习,得到一个所学函数的很好的近似。
然而, 有时候用同样的数据训练同一个网络,你需要每次都得到完全相同的结果。例如在教学和产品上。
在这个教程中,你会学到怎样设置随机数生成器,才能每次用同样的数据训练同一网络时,都能得到同样的结果。
我们开始。
教程概览
这个教程分为六部分:
为啥我每次得到的结果都不一样?不同结果的演示解决方法用Theano 后端设置随机数种子用TensorFlow 后端设置随机数种子得到的结果还是不同,咋办?
运行环境
该教程需要你安装了Python SciPy。你能用Python2或3来演示这个例子需要你安装Keras (v2.0.3+),后台为TensorFlow (v1.1.0+)或Theano (v0.9+)还需要你安装了scikit-learn,Pandas,NumPy以及Matplotlib
如果在Python环境的设置方面需要帮助,请看下面这个帖子:
How to Setup a Python Environment for Machine Learning and Deep Learning with Anaconda
为啥我每次得到的结果都不一样?
我发现这对神经网络和深度学习的初学者而言是个常见问题。
这种误解可能出于以下问题:
我如何得到稳定的结果?我如何得到可重复的结果我应该如何设置种子点
神经网络特意用随机性来保证,能通过有效学习得到问题的近似函数。采用随机性的原因是:用它的机器学习算法,要比不用它的效果更好。
在神经网络中,最常见的利用随机性的方式是网络权值的随机初始化,尽管在其他地方也能利用随机性,这有一个简短的清单:
初始化的随机性,比如权值正则化的随机性,比如dropout层的随机性,比如词嵌入最优化的随机性,比如随机优化
这些甚至更多的随机性来源意味着,当你对同一数据运行同一个神经网络算法时,注定得到不同的结果。
想了解更多关于随机算法的原委,参考下面的帖子
Embrace Randomness in Machine Learning
Original: https://blog.csdn.net/weixin_49272514/article/details/123560254
Author: 火墩墩
Title: 用深度学习每次得到的结果都不一样的解决方案
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/690287/
转载文章受原作者版权保护。转载请注明原作者出处!