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 分钟前
边缘计算场景下的模型轻量化:TensorRT部署YOLOv7的端到端优化指南
人工智能·深度学习·yolo·transformer·边缘计算·gpu算力
果冻人工智能8 分钟前
让未来重现《星际迷航》
人工智能
风口猪炒股指标14 分钟前
2025-4-19 情绪周期视角复盘(mini)
人工智能·博弈论·群体博弈·人生哲学
訾博ZiBo16 分钟前
AI日报 - 2024年04月22日
人工智能
啊哈哈哈哈哈啊哈哈19 分钟前
R4打卡——tensorflow实现火灾预测
人工智能·python·tensorflow
魔道不误砍柴功20 分钟前
Java 2025:解锁未来5大技术趋势,Kotlin融合&AI新篇
java·人工智能·kotlin
自由鬼20 分钟前
AI当前状态:有哪些新技术
人工智能·深度学习·算法·ai·chatgpt·deepseek
闻道☞24 分钟前
RAGFlowwindows本地pycharm运行
python·pycharm·ragflow
沉默的舞台剧34 分钟前
【深度学习入门_NLP自然语言处理】序章
人工智能·深度学习·自然语言处理
默凉36 分钟前
注意力机制(np计算示例)单头和多头
python