2017-09-10 43 views
3

我使用numpy的零和numpy.random.randn實現計算的不一致numpy的參數中的任何原因爲numpy.zeros和numpy.random.randn

W1 = np.random.randn(n_h, n_x) * .01 
b1 = np.zeros((n_h, 1)) 

我不知道爲什麼隨機.randn()可以接受兩個整數,而零()需要一個元組。這是否有充分的理由?

Cheers,JChen。

回答

4

很可能這只是一個歷史問題。前幾個軟件包合併的結果,並且有很長的發展。一些怪癖得到清理,其他人保持現狀。

randn(d0, d1, ..., dn) 
zeros(shape, dtype=float, order='C') 

randn有這樣一個字條:

這是一個方便的功能。如果您想要一個接口將第一個參數作爲 元組,請改爲使用numpy.random.standard_normal

standard_normal(size=None) 

隨着*很容易得到一個元組傳遞給randn

np.random.randn(*(1,2,3)) 

np.zeros需要幾個關鍵字參數。 randn沒有。您可以使用(*args, **kwargs)簽名來定義Python函數。但是接受一個元組,特別是一個用於shape的元組更適合。但這是一個意見問題。

np.random.randnp.random.random_sample是另一對這樣的對。最有可能的是randrandn是舊版本,並且standard_normalrandom_sample是更新的設計以符合更常見的tuple風格。