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.],
         [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 ()

PyTorch torch.randn()返回一个由可变参数大小(定义输出张量形状的整数序列)定义的张量,包含来自标准正态分布的随机数。

标准正态分布,也称为z分布,是一种特殊的正态分布,其均值为0,标准差为1

 torch.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]])

作者:Debgandhar Ghosh

本文转载于网络 如有侵权请联系删除

相关文章

  • 第一范式、第二范式和第三范式「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。数据库的范式概念:设计数据库是,需要遵循的一些规范,要遵循后边的范式要求,必须遵循前边的所有范式要求设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈梯次规范,越高的范式数据库冗余越小目前关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF)。分类:第一范式:每一列都是不可分割的原子数据项第二范式:在第一范式基础上,非码属性必须完全依赖于候选码(在第一范式基础上消除非主属性对主码的部分依赖)几个概念:函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则B依赖于A例如:学号–>姓名(学号,课程名称)–>分数完全函数依赖:A->B如果A是一个属性组,则B属性值得确定需要依赖于A属性组中的所有的属性值。例如:(学号,课程名称)–>分数部分函数依赖:A–>B,如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。例如:(学号,课程名称)–&g

  • 安防监控场景下视频组网/端口映射/穿透服务系统EasyNTS关于内网穿透的实战应用

    对于安防行业的监控系统,我们通常会细分到不同的行业当中,比如购物行业监控管理、自然资源监控管理、餐饮行业监控管理等,针对不同的行业和场景的大小,对应了不同的解决方案。尽管对不同的行业,系统规模不一样,但大部分的系统中由于需要将文件或者信息对外级联或者分享,从而运用到网络穿透功能。在互联网主干道上,大家都是用的公网IP来标识自己。知道这个IP,就可以直接定位连接。当然并不是所有的项目现场都要网络穿透,至少在TSINGSEE青犀视频碰到的大部分项目中,都是因为没有公网IP而无法穿透网络的苦恼存在。在2017年以前,大部分的用户都习惯通过花生壳、Ngrok来实现网络穿透,但Ngrok在国内并不稳定,2017年之后就经常有用户反馈无法使用。即便能够使用,也还需要通过二次开发在国内运行;而花生壳虽然被大多数用户采用,但是其随机分配域名的方式也让需要固定IP的项目团队感到无力。因此针对国内网络穿透和映射的现状,EasyNTS的出现也许是一个转机。EasyNTS内网络穿透功能的主要实现方式,就是通过网页对域名添加映射,添加成功后会生成一个外网访问地址,在浏览器中输入外网访问地址,即可查看内网应用。与

  • PHP数组与字符串互相转换实例

    PHP数组转字符串,与字符串转数组<?php $array=array('lastname','email','phone'); $comma_separated=implode(",",$array); echo$comma_separated;//lastname,email,phone //Emptystringwhenusinganemptyarray: var_dump(implode('hello',array()));//string(0)"" ?复制explode—使用一个字符串分割另一个字符串,返回一个数组<?php //示例1 $pizza="piece1piece2piece3piece4piece5piece6"; $pieces=explode("",$pizza); echo$pieces[0];//piece1 echo$pieces[1];//piece2 //示例2 $da

  • 计算机网络

    Get和Post区别Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。Get执行效率却比Post方法好。Get是form提交的默认方法。GET产生一个TCP数据包;POST产生两个TCP数据包。(非必然,客户端可灵活决定)Http请求的完全过程 浏览器根据域名解析IP地址(DNS),并查DNS缓存浏览器与WEB服务器建立一个TCP连接浏览器给WEB服务器发送一个HTTP请求(GET/POST):一个HTTP请求报文由请求行(requestline)、请求头部(headers)、空行(blankline)和请求数据(requestbody)4个部分组成。服务端响应HTTP响应报文,报文由状态行(statusline)、相应头部(headers)、空行(blankline)和响应数据(responsebody)4个部分组成。浏览器解析渲染计算

  • 换个角度看网络

    声明:本教程只能用于攻击自己的手机,电脑,顶多恶搞恶搞室友。不建议用于在校网环境下做尝试,慎重慎重!!!1、舍友半夜不睡觉,嗨嗨的敲着他的机械键盘,“快快快”、“三级甲”、“98k,卧槽,八倍镜”、“有梦想不?”、“肯定开挂,举报举报”这里要简述的叫做一种网络攻击模式,不攻击别的,就是针对自己宿舍路由器的,一种忽然连着wifi还掉线的感觉。首先简述一下背景信息:什么是ICMP:ICMP是一种控制协议。在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。如下例所示:没到达应到的网络-->icmp报错;包在网络中迷路过期了-->icmp错误。

  • 1692: [Usaco2007 Dec]队列变换(BZOJ1640强化版)

    1692:[Usaco2007Dec]队列变换TimeLimit: 5Sec  MemoryLimit: 64MBSubmit: 682  Solved: 280[Submit][Status]DescriptionFJ打算带他的N(1<=N<=30,000)头奶牛去参加一年一度的“全美农场主大奖赛”。在这场比赛中,每个参赛者都必须让他的奶牛排成一列,然后领她们从裁判席前依次走过。今年,竞赛委员会在接受队伍报名时,采用了一种新的登记规则:他们把所有队伍中奶牛名字的首字母取出,按它们对应奶牛在队伍中的次序排成一列(比如说,如果FJ带去的奶牛依次为Bessie、Sylvia、Dora,登记人员就把这支队伍登记为BSD)。登记结束后,组委会将所有队伍的登记名称按字典序升序排列,就得到了他们的出场顺序。FJ最近有一大堆事情,因此他不打算在这个比赛上浪费过多的时间,也就是说,他想尽可能早地出场。于是,他打算把奶牛们预先设计好的队型重新调整一下。FJ的调整方法是这样的:每次,他在原来队列的首端或是尾端牵出一头奶牛,把她安排到新队列的尾部,然后对剩余的奶牛队列重复以上的操作,直到所有奶牛

  • 谈谈你最熟悉的System.DateTime[上篇]

    最近一直在负责公司内部框架的升级工作,今天对一个小问题进行了重新思考——时间的处理。具体来说,是如何有效地进行时间的处理以提供对跨时区的支持。对于一个分布式的应用来说,倘若客户端和服务端部署与不同的地区,在对时间进行处理的时候,就需要考虑时区的问题。以我们现在的一个项目为例,这是一个为澳大利亚某机构开发的一个基于SmartClient应用(WindowsForm客户端),服务器部署于墨尔本,应用的最终用户可能需要跨越不同的州。澳洲地广人稀,不同的州也有可能会跨越不同的时区。假设数据库并不支持对时区的区分,服务端需要对针对客户端所在的时区对时间进行相应的处理。不过,对该问题解决方案的介绍我会放在后续的文章中,在这里我们先来介绍一些基础性的内容——谈谈我们熟悉的System.DateTime类型。一、你是否知道System.DateTimeKind?System.DateTime类型,我们再熟悉不过。顺便说一下,这个类型不是class,而是一个struct,换言之它是值类型,而不是引用类型。DateTime处理包含我们熟悉的年、月、日、时、分、秒和毫秒等基本属性之外,还具有一个重要的表示时

  • 【HTML基础】HTML基本语法

    HTML语法1.单标记2.双标记3.属性1.单标记HTML中是不区分大小写的,空格与回车在其中无效果 HTML中用于描述功能的符号称为“标记”,单标记是其中的一种。单独使用单标记就可以表达完整的意思,使用一对尖括号将标记名称括起来就能表示一个单标记了。换行单标记:<br>复制为了展示br单标记的效果,我们来看下面一段代码:<html> <head> <metacharset="UTF-8"> <title>br标记示例</title> </head> <body> 这是第一行。 这是第二行。 这是第三行。 点赞 收藏 关注 </body> </html>复制网页效果: 可以发现,代码中看似不同行的内容,在浏览器窗口中被显示在同一行,而这时候br单标签就能实现换行操作。添加br标记:<html> <head> <metacharset="UTF-8"> <title>br标记示例&l

  • mysql 编程

    一、存储函数   相当于php或者js中有返回值的函数--完成一定“计算”后返回单个的数据值 定义:     createfunction函数名(parameterp1value_type,parameterp2value_type,...)     returnsvalue_type     begin       [statement_list]       returnvalue;     end value_type数据类型必须有返回语句return且返回值类型和设定的类型一致 调用形式::跟系统函数调用一样,直接使用名字,定义有参数则必须给定实参 实例:求n的阶乘 createfunctionfactorial_gao(numint) returnsint begin declarenintdefault1; declarefacintdefault1; whilen<=numdo setfac=fac*n; setn=n+1; endwhile; returnfac; end; 复制    默认以;为语句结束符,需要delimit

  • 面试题32.从1到n整数中1出现的次数

    题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从 1到12这些整数中包含1的数字中1,10,11和12,1一共出现了5次   本题可以直接变量1到n的n个数然后分别计算每个数中1的个数,然而这种方法是效率很低下的 书上给出了一共方法,去找数n各个位置上出现1的规律,在这里我就不再描述具体的规律推倒 过程,只是给出这样一个普遍性的规律。     1.对每一位上面的数字,当该数字等于零时,该位上1的个数等于高位*该位的位数 2.对每一位上面的数字,当该数字等于1时,该位上1的个数等于 高位*该位的位数+低位数加1 3.对每一位上面的数字,当该数字等于非0非1时,该位上1的个数等于 (高位+1)*该位的位数   例如52014 该数字十位数为1,那么十位上1的个数=(520)*10+(4+1)=5205 该数字百位数为0,那么百位上1的个数=(52)*100=5200 该数字千位数为2,那么千位上1的个数=(5+1)*1000=6000   该数字个位数为4,那么个位上1的个数=(52

  • Hadoop2.7.x中所有的DataNode都启动不了解决办法

    参考:Hadoop集群所有的DataNode都启动不了解决办法说明现象:我自己出现这个问题的原因是:自己在namenode格式化之后创建了一些文件,然后重新执行了namenode格式化导致的。   现象就是./sbin/start-dfs.sh之后,通过jps查看master的namenode、secondnamenode启动成功,但是slave节点上面的datanode没有启动 导致这问题的原因:   就是在两次格式化期间,主从节点的文件系统HDFS中的文件不一致,删除从节点上的hdfs初始目录下的文件,然后重新在启动。      如有转载请请务必保留此出处:http://www.cnblogs.com/xiangyangzhu/

  • 测试用例

    定义 软件测试用例的重要性     测试用例设计及其选取   如何编写软件测试用例 注:这里的it指的是集成测试阶段,st指的是系统测试阶段,uat指的是用户验收测试阶段。        

  • 互联网测试开发面试题集锦(中)网络篇

    网络篇   访问一个完整http请求会经历哪些问题 域名解析 发起TCP的3次握手 建立TCP连接后发起http请求 服务器端响应http请求,浏览器得到html代码 浏览器解析html代码,并请求html代码中的资源 浏览器对页面进行渲染呈现给用户。 具体每一步骤可以参考https://www.cnblogs.com/YeChing/p/6337378.html   https和http请求的区别 https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议 按加密来说涉及到了非对称加密以及证书CA的处理,具体可以自行搜索了解下https://www.cnblogs.com/wqhwe/p/5407

  • 进程从硬盘读取文件的过程

    本文转载于http://blog.codepiano.com/2017/03/01/read-file-from-disk CPU和硬盘的关系是不太好描述,CPU本质上只是用来执行指令,具体的读取文件的操作是操作系统来做的,从操作系统的角度来说可能要方便一些。像其他答案说的,你的这些疑问应该去看操作系统和计算机组成原理相关的教材,形成一个整体上认识,而不应该片面的了解某一个方面。 我下面简单叙述一下操作系统在从硬盘读文件的流程。 为简单起见,假设场景是一个x86体系的32位Linux操作系统中运行的进程P需要读取文件/home/user/test.txt,文件系统使用ext3。 Linux系统提供了和IO相关的系统调用,进程P如果要读取文件,首先需要发起系统调用(SystemCall)open,传入文件路径”/home/user/test.txt”和相关参数,来打开文件,执行系统调用以后操作系统会从用户态转换到内核态,部分CPU提供了”trap”或者”syscall”指令来完成状态切换,切换到内核态以后,操作系统调用相应的处理器(handler)开始处理读取文件的请求。 系统调用op

  • 输入输出重定向

    把所有标准输出和标准错误输出都输出到文件(屏幕无输出): lsfile1non-file>./out.log2>&1   同上: lsfile1non-file1>./out.log2>&1   有时候会看到1>&2,但是第一个就不能简写了: lsfile1non-file2>./out.log1>&2   如果写反了,那错误信息就输出在屏幕上,标准输出在out.log里: lsfile1non-file2>&1>./out.log   把所有标准输出和标准错误输出都扔到垃圾桶里面: lsfile1non-file>/dev/null2>&1   简写,把标准输出和错误一起输出到文件:  lsfile1non-file>&./out.put 或lsfile1non-file&>./out.put

  • 16 python学习笔记-使用yagmail模块发送邮件

    在我们跑完自动化脚本生成测试报告后会有发送邮件给相关人员的需求,python发送邮件有原生的smtplib和email库,但添加附件的时候,需要自己设置MIME,代码最少也会有十多行,不太方便,本章主要介绍python中如何使用更方便的yagmail库来发送邮件。 一、yagmail的安装 直接使用pipinstallyagmail安装即可 二、发邮件前邮箱配置准备 写代码之前,要对发邮件的邮箱进行设置,开启SMTP服务,获取到授权码。yagmail模块发送邮件时使用的密码就是授权码,而不是我们平时使用的邮箱登录密码。 以qq邮箱为例:在设置--账户---SMTP服务---生成授权码----发送短信设置授权码,发送邮件的时候使用这个授权码就可以了    163邮箱获取授权码的方法也类似,设置---客户端授权密码---开启---生成授权码---发送短信配置授权码    三、用yagmail模块自动发送邮件   1importyagmail 2 3username='123456@163.com'#邮箱账号 4passwd='1234

  • 94、springboot+minio实现分片上传(超大文件快速上传)

    设计由来  在实际的项目开发中常遇到超大附件上传的情况,有时候客户会上传GB大小的文件,如果按照普通的MultipartFile方式来接收上传的文件,那么无疑会把服务器给干崩溃,更别说并发操作了。于是笔者决定要写一个超大附件上传的方法,于是有此。 功能实现图      功能介绍 上传请求异步操作,前端使用Worker线程处理,避免主线程阻塞 使用vue+springboot+minio实现方式 前端对大文件进行分片+后台进行合并 由于md5计算耗时太大故隐去改功能,md5可以实现妙传功能(校验文件是否存在) 支持多文件上传+文件夹上传(递归文件夹中的所有文件) 核心代码 <template> <divclass="container"> <h2>Minio上传示例</h2> <el-upload class="upload-demo" ref="upload" action="https://jsonplaceholder.typicode.com/posts/" :on-remove="ha

  • nodejs &lt;a&gt;带参数返回路由标记执行数据库操作

    今天在测试mongo数据库操作维护的时候,测试了一下直接在表内添加操作列来完成数据的删除操作,直接返回数据库ID,页面表格如下:    通过点击删除,即可完成对应条目数据库删除操作。 1、mongo数据操作<db1.js> functiondelStudentid(id,callback){   MongoClient.connect(url,{useNewUrlParser:true},function(err,client){     if(err){       console.log("连接数据库失败,请mongod开机");       return;     }     //Usetheadmindatabasefortheoperation    &n

  • DC(二)——DC综合流程

    系统层次划分: DC中每个设计由6个设计物体组成,分别为:design,cell,port,pin,net和clock。    当前设计为TOP,Port和Pin是与当前设计相关的一对概念,如果当前设计改变,相应的port和pin也会不同。 综合的流程 定义库 DC启动时会启动.synopsys_dc.setup文件,里面设定了综合所需要的工艺库的信息以及一些对于工具的设定命令。 在综合前需要设定好所需要的各种库,如综合库、I/O单元库、IP核等。 综合库中包含许多信息,如单元的功能、面积、时间、功耗、测试等,线负载模型,工作条件和设计规则约束。 单元的延迟与输入的逻辑转换时间和输出负载有关,可以根据每个单元输入逻辑转换时间和输出负载,在工艺库提供的LUT中查找单元的延时。 库: 目标库(target_library):DC在编译过程中来构成电路图的,将电路映射到具体的单元中。如:settarget_librarymy_tech.db 链接库(link_library):是将设计连接到对应的库上,一般包括目标库、宏单元、IP核等。如:setlink_library

  • 从实用主义深入理解c++虚函数

    记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下。 装逼一刻: 最近,本人思想发生了巨大的转变,在大学的时候由于读书少,经常写一些玩具程序而沾沾自喜,总之一句话,那时写程序纯粹是为了写程序而写程序。然而,作为大部分的学习者来说,往往忽略了学习开发语言的本质。即C++语言的设计思想也是以服务生产生活为主的,总结成一句话就是C++是实用的。我们在学习这门语言的一些特性的时候,上来就开始直接去记忆或者揣摩这些特性的本身往往不是一个很好的学习方法。 当你弄明白了这个特性是为了解决什么问题而设计的时候,在现实中有那些应用的时候,再去结合理解这些特性就会很容易理解的更深刻,更难忘。 同时,写程序也一样,作为一个以前上来就开始写程序的人深深觉得以前的自己很愚蠢。哪怕你去写一个很简单的接口函数,都要去尽量的想,这个程序的参数可能是有那些人通过那些操作来传递的,他们可能出现的误操作是那些?如果出现了误操作该怎么去处理?当想清楚了这一切再去写函数。(想的多的人,往往比上来蛮干的人,要牛x的多。) ----------

  • test

    test test test 1 #include<bits/stdc++.h> 复制 \[a^2+b^2=c^2 \]

相关推荐

推荐阅读