PyTorch常用5个抽样函数
PyTorch是一个开源的深度学习框架,它提供了一个用于高级特性的Python包。在本文中,我们将介绍PyTorch中的常见抽样函数。抽样是一个统计过程,它从总体中提取一个子集,通过子集来研究整个总体。
torch.bernoulli()
伯努利分布是一个离散分布,有两个结果,即成功和失败。如果成功的概率是p,那么失败的概率是(1-p),反之亦然。
PyTorch的实现和相应的输出如下:
a = torch.empty(3, 3).uniform_(0, 1)
print(a)
输出如下:
tensor([[0.0966, 0.7385, 0.6546],
[0.4255, 0.8294, 0.8315],
[0.8065, 0.8228, 0.6467]])
现在我们把bernoulli()函数应用到张量上
torch.bernoulli(a)
输出如下:
tensor([[0., 1., 1.],
[1., 1., 0.],
[1., 0., 1.]])
torch.Tensor.cauchy_()
柯西分布,又称柯西-洛伦兹分布,在统计学中,具有两个参数的连续分布函数,最早于19世纪初由法国数学家奥古斯丁-路易斯·柯西研究。后来,19世纪的荷兰物理学家亨德里克·洛伦兹(Hendrik Lorentz)用它来解释强迫共振或振动。第一眼看柯西分布看起来像正态分布,但它的“尾巴”并不像正态分布那样迅速逐渐消失。
柯西分布可能看起来类似于正态分布,它的峰值比高斯分布高,与正态分布不同的是,它的尾部衰减得更慢。
a = torch.ones(3, 3)
a
输出:
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
现在我们应用cauchy_()函数
torch.Tensor.cauchy_(a)
输出:
tensor([[-4.5374, 0.3726, 0.4947],
[ 0.4111, 0.9167, 0.7214],
[ 1.0533, -9.2247, 0.7620]])
注意,这里的函数名称以"_"结尾,这是pytorch的一个规定,他将会用改写参数,也就是我们传进去的变量a
torch.poisson ()
泊松分布用于计算一个事件在平均价值率(时间)的一定时间内发生的可能性。泊松分布是一个离散的概率分布。
a = torch.rand(4, 4) * 5 # rate parameter between 0 and 5
torch.poisson(a)
输出如下:
tensor([[2., 1., 0., 8.],
[2., 3., 3., 3.],