我使用numpy零和numpy.random.randn实现计算
W1 = np.random.randn(n_h, n_x) * .01
b1 = np.zeros((n_h, 1))
我不确定为什么 random.randn() 可以接受两个整数,而 zeros() 需要一个元组。有这么好的理由吗?
干杯,JChen。
答案 0 :(得分:7)
最有可能的只是历史问题。 numpy
来自几个先前包的合并,并且有很长的发展。一些怪癖得到了清理,其他人则保持原样。
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.rand
和np.random.random_sample
是另一对。最有可能rand
和randn
是旧版本,standard_normal
和random_sample
是较新版本,旨在符合更常见的tuple
样式。