Pytorch的torch.randint()详解
torch.randint
用于生成指定范围内的随机整数张量,是常用的张量创建方法之一。它特别适用于需要生成离散随机数的时候,如初始化张量、创建随机索引等。
方法签名
torch.randint(low=0, high, size, out=None, dtype=torch.int64, layout=torch.strided, device=None, requires_grad=False)
参数详解
- low (int, optional):生成随机整数的下界(包含),默认为0。如果不设置,则默认最低值为0。
- high (int):生成随机整数的上界(不包含)。
- size (tuple of ints):新生成的张量的形状。
- out (Tensor, optional):输出张量,如果指定,结果将被存储到该张量中。
- dtype (torch.dtype, optional):输出张量的数据类型,默认是
torch.int64
。 - layout (torch.layout, optional):张量的布局,默认是
torch.strided
。 - device (torch.device, optional):张量所在的设备(CPU或CUDA),默认情况下根据运行环境自动选择。
- requires_grad (bool, optional):如果设置为True,则创建的张量会记录其计算图,用于自动求导,默认是False。
返回值
返回一个包含在给定范围内随机整数的张量,其形状由size
参数指定。
例子
基本用法
import torch # 生成一个形状为 [5] 的张量,包含5个在 0 到 10 之间的随机整数 tensor1 = torch.randint(0, 10, (5,)) print(tensor1)
指定形状的张量
import torch # 生成一个形状为 [2, 3] 的张量,包含在 -5 到 5 之间的随机整数 tensor2 = torch.randint(-5, 5, (2, 3)) print(tensor2)
指定设备的张量
import torch # 生成一个形状为 [2, 3] 的张量,包含在 0 到 10 之间的随机整数,并指定生成的张量在CUDA设备上 tensor3 = torch.randint(0, 10, (2, 3), device='cuda') print(tensor3) print(tensor3.device)
生成requires_grad的张量
import torch # 生成一个形状为 [2, 2] 的张量,包含在 0 到 5 之间的随机整数,并且该张量记录计算图以用于自动求导 tensor4 = torch.randint(0, 5, (2, 2), requires_grad=True) print(tensor4) print(tensor4.requires_grad)
使用out参数
import torch # 预先定义一个张量 out_tensor = torch.empty(3, 3) # 使用 randint 方法将随机整数填入预先定义的张量 torch.randint(0, 10, (3, 3), out=out_tensor) print(out_tensor)
注意事项
high
参数必须指定,且必须大于low
参数。- 如需生成在最小值和最大值之间的张量,请确保
high
和low
的值设置正确。 - 如果需要在某一特定设备(如GPU)上创建张量,可以通过设置
device
参数来实现。 - 当需要记录计算图以便于梯度计算时,可以设置
requires_grad=True
。
torch.randint
是生成离散均匀分布随机数张量的常用工具,它的灵活性和易用性使得这个方法在许多场景中都非常实用。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接