我在找一个网络。我发现这个话题https://iamtrask.github.io/2015/07/12/basic-python-network/
进展得很好,但我不明白这部分:
# seed random numbers to make calculation
# deterministic (just a good practice)
np.random.seed(1)
# initialize weights randomly with mean 0
syn0 = 2 * np.random.random((3, 1)) - 1那么np.random.seed(1)是什么意思呢?为什么不是(0)?((1)的平均值是多少?),页码作者说“用平均值0随机初始化权重”。
syn0 = 2 * np.random.random((3, 1)) - 1这对安的体重意味着什么?
发布于 2017-11-28 19:42:06
问题1:
出于实际的目的,没有区别,这只是一种方法,得到相同的随机数字,每次你运行你的程序。请随意阅读维基百科的更多细节:seed
问题2:
用零均值权值初始化你的神经网络是一个很好的实践,它通常表现出很好的收敛行为。查看此页面以获得更多详细信息:http://cs231n.github.io/neural-networks-2/#init
因此,我们仍然希望权重非常接近于零,但正如我们前面所指出的,不完全是零。作为一种解决方案,通常将神经元的权值初始化为小数,并将其称为对称性破坏。这个想法是,神经元在开始的时候都是随机的和唯一的,所以它们会计算不同的更新,并将自己整合成整个网络的不同部分。
在Quora线程中有更多关于这个主题的讨论:https://www.quora.com/Why-does-it-work-to-initialize-weights-of-a-deep-Neural-Network-to-zero-plus-some-noise-N-0-epsilon-and-not-anything-else
https://stackoverflow.com/questions/47539524
复制相似问题