在NumPy和PyTorch中,标准正态分布在实践中如何工作?

时间:2019-07-12 17:51:32

标签: python-3.x numpy pytorch probability-distribution

我有两点要问:

1) 我想了解NumPy的np.random.randn和PyTorch的{​​{1}}究竟返回了什么。它们都从具有均值0和std 1的正态分布返回具有随机数的张量,因此是标准正态分布。但是,这与将torch.randn值放入标准正态分布函数here中并获取其各自的图像值x不同。 PyTorch和NumPy返回的值看起来不是这样。

对我来说,似乎这些库中的ynp.random.randn都从函数中返回torch.randn的值,而不是我下面计算的图像x。正确吗?

y

打印normal = np.array([(1/np.sqrt(2*np.pi))*np.exp(-(1/2)*(i**2)) for i in range(-38,39)]) 变量会显示类似这样的内容。

normal

2)另外,如果我们问这些库我想要标准正态分布的值矩阵,是否意味着所有行和列都来自同一标准分布?如果我想在每一行进行i.i.d分布,我需要通过array([1.10e-314, 2.12e-298, 1.51e-282, 3.94e-267, 3.79e-252, 1.34e-237, 1.75e-223, 8.36e-210, 1.47e-196, 9.55e-184, 2.28e-171, 2.00e-159, 6.45e-148, 7.65e-137, 3.34e-126, 5.37e-116, 3.17e-106, 6.90e-097, 5.52e-088, 1.62e-079, 1.76e-071, 7.00e-064, 1.03e-056, 5.53e-050, 1.10e-043, 8.00e-038, 2.15e-032, 2.12e-027, 7.69e-023, 1.03e-018, 5.05e-015, 9.13e-012, 6.08e-009, 1.49e-006, 1.34e-004, 4.43e-003, 5.40e-002, 2.42e-001, 3.99e-001, 2.42e-001, 5.40e-002, 4.43e-003, 1.34e-004, 1.49e-006, 6.08e-009, 9.13e-012, 5.05e-015, 1.03e-018, 7.69e-023, 2.12e-027, 2.15e-032, 8.00e-038, 1.10e-043, 5.53e-050, 1.03e-056, 7.00e-064, 1.76e-071, 1.62e-079, 5.52e-088, 6.90e-097, 3.17e-106, 5.37e-116, 3.34e-126, 7.65e-137, 6.45e-148, 2.00e-159, 2.28e-171, 9.55e-184, 1.47e-196, 8.36e-210, 1.75e-223, 1.34e-237, 3.79e-252, 3.94e-267, 1.51e-282, 2.12e-298, 1.10e-314]) 循环为每一行调用np.random.randn,然后for进行调用吗?

1 个答案:

答案 0 :(得分:0)

1)是的,因为phi(x)的公式给出了采样值x的概率密度,所以它们给了x而不是phi(x)。如果您想知道在间隔[a,b]中获取值的可能性,则需要对a和b之间的phi(x)进行积分。直观地看一下函数phi(x),您会发现比零附近的值更容易得到零附近的值。 一种简单的查看方法是查看采样值的直方图。

import numpy as np
import matplotlib.pyplot as plt    
samples = np.random.normal(size=[1000])
plt.hist(samples)

enter image description here

2)他们是iid。只需像这样使用2d大小:

samples = np.random.normal(size=[10, 10])
相关问题