2017-11-28 8 views
1

私はネットワークを探しています。np.random.seed(1)とnp.random.seed(0)の違いは?

# 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)ことを意味:私はhttps://iamtrask.github.io/2015/07/12/basic-python-network/

そのが良いだろうが、私はその部分を理解カントこのトピックを見つけますか?なぜそれはisnt(0)ですか? (1)) とページ作家の平均が

syn0 = 2 * np.random.random((3, 1)) - 1 

それはアンの重みのために何を意味するため、「ランダムに平均0と重みを初期化する」と言ういただきましたか!?

+0

すべてで乱数ジェネレータをシードする奇妙に思えます。それをシードすると、プログラムを実行するたびに「ランダム」な数字の同じシーケンスが発生します。 "平均値0"は、-1と1の間の値を返すことを意味します。均等に分布すると、平均値は0になります。 – dwilliss

+0

乗算 "2"を使用して-1と1の間をどのように戻すことができますか? ??? –

+0

私はPythonのランダム関数に慣れていないので、0から1までの数値の浮動小数点数を返すと推測しています。倍にすると、0と2の間になります.1を減算すると-1になります。私はリストの議論が何であるか分からないので、私はおそらく間違っています。 – dwilliss

答えて

1

質問#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

+0

回答ありがとうございますが、私はまだ2番目の質問があります。 syn0 = 2 * np.random.random((3,1)) - 1 なぜ2を乗じて、なぜ1を抽出するのかその意味ですか? 2と1の値を理解できません。 –

+0

@AlperKutluそれを中心にするには/ mean = 0にします。 1 * random - 0.5を行うこともできます。しかし、それはもっと醜いです。もしあなたがそれを知らないなら、random.randomが返すものを読み上げる。 – sascha

関連する問題