np.random.seed(1)和np.random.seed(0)之间的区别?

时间:2017-11-28 19:33:39

标签: python python-3.x numpy random artificial-intelligence

我正在寻找一个网络。我找到了这个话题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

对于年轻人来说意味着什么?

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