我正在使用 numpy zeros 和 numpy.random.randn 实现计算
W1 = np.random.randn(n_h, n_x) * .01
b1 = np.zeros((n_h, 1))
我不知道为什么 random.randn() 可以接受两个整数,而 零()需要一个元组。有充分的理由吗?
干杯,JChen。
最佳答案
很可能这只是历史问题。 numpy
由先前的几个包合并而成,并有长期的发展。一些怪癖得到了清理,其他的则保持原样。
randn(d0, d1, ..., dn)
zeros(shape, dtype=float, order='C')
randn
有这个注释:This is a convenience function. If you want an interface that takes a tuple as the first argument, use
numpy.random.standard_normal
instead.
standard_normal(size=None)
与
*
很容易将元组传递给 randn
:np.random.randn(*(1,2,3))
np.zeros
需要几个关键字参数。 randn
才不是。您可以使用 (*args, **kwargs)
定义 Python 函数。签名。但是接受一个元组,尤其是一个常见用法为 shape
的元组。 ,更适合。但这是一个见仁见智的问题。np.random.rand
和 np.random.random_sample
是另一个这样的一对。最有可能 rand
和 randn
是旧版本,standard_normal
和 random_sample
是较新的,旨在符合更常见的 tuple
风格。
关于numpy - numpy.zeros 和 numpy.random.randn 的 numpy 参数不一致的任何原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46137809/