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
相关推荐
sirius1234512326 分钟前
自定义数据集 ,使用朴素贝叶斯对其进行分类
python·分类·numpy
蓝染k9z39 分钟前
在Ubuntu上使用Docker部署DeepSeek
linux·人工智能·ubuntu·docker·deepseek+
shanks661 小时前
【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点
python·pyqt
小李学AI1 小时前
基于YOLO11的遥感影像山体滑坡检测系统
人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉·yolo11
笨小古2 小时前
保姆级教程:利用Ollama与Open-WebUI本地部署 DeedSeek-R1大模型
人工智能·deepseek
AI浩2 小时前
【Block总结】CPCA,通道优先卷积注意力|即插即用
人工智能·深度学习·目标检测·计算机视觉
weixin_307779132 小时前
流媒体娱乐服务平台在AWS上使用Presto作为大数据的交互式查询引擎的具体流程和代码
大数据·python·音视频·aws
職場上的造物主3 小时前
高清种子资源获取指南 | ✈️@seedlinkbot
python·ios·php·音视频·视频编解码·视频
IT果果日记3 小时前
Ollama+OpenWebUI部署本地大模型
人工智能·ai编程·ollama·openwebui
说私域3 小时前
基于开源2 + 1链动模式AI智能名片S2B2C商城小程序的内容创作与传播效能探究
人工智能·小程序·开源