gpt4 book ai didi

python - 何时使用 numpy.random.randn(...) 以及何时使用 numpy.random.rand(...)?

转载 作者:行者123 更新时间:2023-11-30 21:55:02 29 4
gpt4 key购买 nike

在我的深度学习练习中,我必须初始化一个与 A1 大小相同的参数 D1,所以我所做的是:

D1 = np.random.randn(A1.shape[0],A1.shape[1]) 

但是在计算进一步的方程后,当我检查结果时,它们不匹配,然后在正确阅读文档后,我发现他们说使用 rand 而不是 randn 初始化 D1;

D1 = np.random.rand(A1.shape[0],A1.shape[1]) 

但是他们没有具体说明其原因,因为代码在这两种情况下都有效,并且该练习也有一个文档,所以我找出了错误,但是如何何时为什么从这两者中进行选择?

最佳答案

rand之间的区别和 randn是(除了字母n),rand 返回从 uniform distribution 采样的随机数在区间 [0,1) 上,而 randn 则从 normal (a.k.a. Gaussian) distribution 中采样均值为 0,方差为 1。

换句话说,rand 生成的随机数的分布如下所示:

Uniform distribution

在均匀分布中,所有随机值都限制在特定区间内,并且均匀分布在该区间内。例如,如果您使用 rand 生成 10000 个随机数,您会发现其中大约 1000 个在 0 到 0.1 之间,大约 1000 个在 0.1 到 0.2 之间,大约 1000 个在 0.2 之间和0.3,等等。 所有都将在 0 到 1 之间 - 你永远不会得到任何超出该范围的值。

同时,randn 的分布如下所示:

Normal distribution

均匀分布和正态分布之间的第一个明显区别是正态分布没有上限或下限 - 如果您使用 randn 生成足够的随机数,您最终会得到一个如下所示的随机数:大或小随你喜欢(好吧,无论如何,要受到用于存储数字的浮点格式的限制)。但您得到的大多数数字仍然相当接近于零,因为正态分布并不平坦:randn 的输出更有可能落在 0 和 0.1 之间大于 0.9 到 1 之间,而对于 rand 来说,这两种情况的可能性是相同的。事实上,如图所示,大约 68% 的 randn 输出落在 -1 和 +1 之间,而 95% 落在 -2 和 +2 之间,大约 99.7% 落在 -3 和 +1 之间。 +3。

这是完全不同的概率分布。如果你把其中一个换成另一个,事情几乎肯定会崩溃。如果代码不是简单地崩溃,那么您几乎肯定会得到不正确和/或无意义的结果。

关于python - 何时使用 numpy.random.randn(...) 以及何时使用 numpy.random.rand(...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57863277/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com