PyTorch是一个开源的深度学习框架,它提供了一个用于高级特性的Python包。在本文中,我们将介绍PyTorch中的常见抽样函数。抽样是一个统计过程,它从总体中提取一个子集,通过子集来研究整个总体。
torch.bernoulli()
伯努利分布是一个离散分布,有两个结果,即成功和失败。如果成功的概率是p,那么失败的概率是(1-p),反之亦然。
PyTorch的实现和相应的输出如下:
a=torch.empty(,).uniform_(0,1)print(a)
输出如下:
tensor([[0.,0.,0.],[0.,0.,0.],[0.,0.,0.]])
现在我们把bernoulli()函数应用到张量上
torch.bernoulli(a)
输出如下:
tensor([[0.,1.,1.],[1.,1.,0.],[1.,0.,1.]])
torch.Tensor.cauchy_()
柯西分布,又称柯西-洛伦兹分布,在统计学中,具有两个参数的连续分布函数,最早于19世纪初由法国数学家奥古斯丁-路易斯·柯西研究。后来,19世纪的荷兰物理学家亨德里克·洛伦兹(HendrikLorentz)用它来解释强迫共振或振动。第一眼看柯西分布看起来像正态分布,但它的“尾巴”并不像正态分布那样迅速逐渐消失。
柯西分布可能看起来类似于正态分布,它的峰值比高斯分布高,与正态分布不同的是,它的尾部衰减得更慢。
a=torch.ones(,)a
输出:
tensor([[1.,1.,1.],[1.,1.,1.],[1.,1.,1.]])
现在我们应用cauchy_()函数
torch.Tensor.cauchy_(a)
输出:
tensor([[-4.,0.,0.],[0.,0.,0.],[1.05,-9.,0.]])
注意,这里的函数名称以"_"结尾,这是pytorch的一个规定,他将会用改写参数,也就是我们传进去的变量a
torch.poisson()
泊松分布用于计算一个事件在平均价值率(时间)的一定时间内发生的可能性。泊松分布是一个离散的概率分布。
a=torch.rand(4,4)*5#rateparameterbetween0and5torch.poisson(a)
输出如下:
tensor([[2.,1.,0.,8.],[2.,.,.,.],[0.,0.,1.,6.],[0.,5.,.,.]])
torch.normal()
正态分布,又称高斯分布,是独立随机变量的连续分布函数。该分布有一个钟形曲线,其特征有两个参数:均值,即图型上的最大值,图总是对称的;还有标准差,它决定了离均值的差值。
torch.normal(mean=torch.arange(1.,11.),std=torch.arange(1,0,-0.1))
输出如下:
tensor([-0.,2.8,2.,.,5.,5.,7.,8.,9.,10.])
torch.rand()
PyTorchtorch.randn()返回一个由可变参数大小(定义输出张量形状的整数序列)定义的张量,包含来自标准正态分布的随机数。
标准正态分布,也称为z分布,是一种特殊的正态分布,其均值为0,标准差为1
torch.randn(4,4)
输出如下:
tensor([[-1.,-0.,-0.,0.],[-1.,-0.,1.,0.64],[-0.4,-0.,-0.,-0.],[0.,-1.,2.18,0.]])