PyTorch随机数生成:torch.rand,torch.randn,torch.randind,torch.rand_like

在用PyTorch做深度学习开发过程中,时常用到随机数生成功能,但经常记不住几个随机数生成函数的用法,现在正好有点时间,整理一下。

1. torch.rand()

python 复制代码
torch.rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensor

该函数可以生成一个范围在[0, 1)之间均匀分布的随机tensor,tensor的形状由size指定。随机数类型默认为torch.float32,也可以通过torch.set_default_tensor_type()指定默认类型,例如:

复制代码
>>> torch.tensor([1.2, 3]).dtype    # initial default  is torch.float32
torch.float32
>>> torch.set_default_tensor_type(torch.DoubleTensor)
>>> torch.tensor([1.2, 3]).dtype    # a new floating point tensor
torch.float64

Example:

生成一个3x4的tensor:

python 复制代码
torch.rand(3,4)

2. torch.randn()

python 复制代码
torch.randn(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensor

该函数用来生成一个均值为0,方差为1的正态分布tensor,tensor的形状由size指定,默认类型为torch.float32,也可由torch.set_default_tensor_type()指定默认类Example:

Example:

生成一个2x8的正态分布tensor:

python 复制代码
torch.randn(2,8)

3. torch.randint()

该函数的定义为:

python 复制代码
torch.randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

利用该函数,生成一个范围在[low, hight)之间的均匀分布随机整数tensor,tensor的形状通过size来定义。该函数默认生成torch.int64类型数据,如果需要生成其他类型,则可以通过dtype指定,例如可以指定dtype=torch.float32。

example:

生成一个大小为5x5的范围在0~10之间的tensor:

python 复制代码
torch.randint(0, 10, (5,5))

4. torch.rand_like()

除了以上几种需要指定生成tensor形状的函数之外,还可以根据已知对象的形状来生成新的张量,这就是几个*_like函数的妙用,包括torch.rand_like,torch.randn_like,torch.randint_like。

其中,torch.rand_like的定义如下:

python 复制代码
torch.rand_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) → Tensor

该函数返回一个与输入对象input相同形状的tensor,该tensor符合[0, 1)之间的均匀分布。该函数与

torch.rand(input.size(), dtype=input.dtype, layout=input.layout, device=input.device)

具有相同的效果。

Example:

已知张量A,生成一个与A同形状的张量B:

python 复制代码
A = torch.ones(4,5)
B = torch.rand_like(A)

torch.randn_like、torch.randint_like与torch.rand_like用法相似,下面只给出两个函数的定义,不再赘述。

python 复制代码
torch.randn_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) → Tensor
python 复制代码
torch.randint_like(input, low=0, high, \*, dtype=None, layout=torch.strided, device=None, requires_grad=False, memory_format=torch.preserve_format) → Tensor
相关推荐
说私域4 分钟前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技6 分钟前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi
shangyingying_117 分钟前
关于小波降噪、小波增强、小波去雾的原理区分
人工智能·深度学习·计算机视觉
小赖同学啊1 小时前
物联网数据安全区块链服务
开发语言·python·区块链
码荼1 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
书玮嘎1 小时前
【WIP】【VLA&VLM——InternVL系列】
人工智能·深度学习
猫头虎2 小时前
猫头虎 AI工具分享:一个网页抓取、结构化数据提取、网页爬取、浏览器自动化操作工具:Hyperbrowser MCP
运维·人工智能·gpt·开源·自动化·文心一言·ai编程
要努力啊啊啊2 小时前
YOLOv2 正负样本分配机制详解
人工智能·深度学习·yolo·计算机视觉·目标跟踪
CareyWYR2 小时前
大模型真的能做推荐系统吗?ARAG论文给了我一个颠覆性的答案
人工智能