当前位置: 首页 > 科技观察

PyTorch常用的五个采样函数

时间:2023-03-12 11:19:31 科技观察

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世纪的荷兰物理学家亨德里克·洛伦兹用它来解释受迫共振或振动。乍一看,柯西分布看起来像正态分布,但它的“尾巴”并没有像正态分布那样迅速变细。Cauchy分布可能看起来类似于正态分布,因为它具有比高斯分布更高的峰值,并且与正态分布不同,它具有更缓慢衰减的尾部。a=torch.ones(3,3)一个输出: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的要求。他会用到改写后的参数,也就是我们在torch.poisson()中传入的变量泊松分布是用来计算某个事件在一定时间内发生概率的平均值率(时间)。泊松分布是一种离散概率分布。a=torch.rand(4,4)*5#rateparameterbetween0and5torch.poisson(a)的输出如下:tensor([[2.,1.,0.,8.],[2.,3.,3.,3.],[0.,0.,1.,6.],[0.,5.,3.,3.]])torch.normal()正态分布,又称高斯分布,是独立随机变量的连续分布函数。该分布具有钟形曲线,其特征在于两个参数:均值,即图形上的最大值,始终对称;和标准偏差,它决定了与平均值的差异。torch.normal(mean=torch.arange(1.,11.),std=torch.arange(1,0,-0.1))输出以下内容:tensor([-0.6932,2.3833,2.3547,3.8103,5.4436,5.8295,7.5898,8.4793,9.1938,10.0637])torch.rand()PyTorchtorch.randn()返回由可变参数size定义的张量(定义输出张量形状的整数序列),包含来自标准的随机数正态分布数。标准正态分布,也称为z分布,是一种特殊的正态分布,均值为0,标准差为1torch.randn(4,4)的输出如下:tensor([[-1.3119,-0.2177,-0.2496,0.2361],[-1.2755,-0.2271,1.5297,0.6433],[-0.4198,-0.9269,-0.6260,-0.9713],[0.6730,-1.2400,2.1338,0.2051]])