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
相关推荐
珂朵莉MM2 分钟前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--启发式算法+操作因子设计
人工智能·算法
Smoothcloud润云5 分钟前
从“预测下一个词”到“预测下一个世界状态”:世界模型作为AGI新范式的深度分析报告
人工智能·测试工具·微服务·容器·github·状态模式·agi
Magic-Yuan18 分钟前
用好AI的五个习惯
人工智能
石工记18 分钟前
AI 应用开发新范式 MCP
人工智能
360亿方智能20 分钟前
行业领先!360AI多模态知识库深度集成前沿技术,精准对齐图、文、视跨模态知识
人工智能
CareyWYR26 分钟前
LLM 时代,程序员的"懒惰"美德正在消亡?
人工智能
IT_陈寒37 分钟前
折腾一天才明白:Vite的热更新为什么偶尔会罢工
前端·人工智能·后端
AI创界者1 小时前
Ace-Step-1.5-XL-Turbo ai歌曲生成一键整合包,解压即用!支持高保真长音频,AI音乐制作进入2.0时代
人工智能·音视频
undsky_1 小时前
豆豆AI画布 - “动漫分身”视频制作
人工智能
阿里云大数据AI技术1 小时前
打造多模态数据基石:阿里云PAI赋能海量多模态数据高效处理
人工智能