我正在寻找一个网络。我找到了这个话题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
对于年轻人来说意味着什么?
答案 0 :(得分:2)
问题#1:
出于实际目的,没有区别,它只是每次运行程序时获得相同随机数的一种方法。欢迎阅读有关维基百科的更多详细信息:https://en.wikipedia.org/wiki/Random_seed
问题#2:
使用零均值权重初始化ANN是一种很好的做法,通常表现出良好的收敛行为。有关详细信息,请查看此页面: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