torch.logspace
是 PyTorch 中的一个函数,用于生成一个在指定范围内对数均匀分布的张量。这个函数类似于 torch.linspace
,但 torch.logspace
生成的值是在对数尺度上均匀分布的,而不是在线性尺度上。
函数签名
torch.logspace(start, end, steps=100, base=10.0, dtype=None, layout=torch.strided, device=None, requires_grad=False)
参数说明
- start (float): 对数空间的起始值(以
base
为底的对数)。 - end (float): 对数空间的结束值(以
base
为底的对数)。 - steps (int): 生成的张量中的元素个数。默认值为 100。
- base (float): 对数的底数。默认值为 10.0。
- dtype (torch.dtype, optional): 输出张量的数据类型。如果未指定,则根据输入参数推断数据类型。
- layout (torch.layout, optional): 输出张量的内存布局。默认值为
torch.strided
。 - device (torch.device, optional): 输出张量所在的设备(如 CPU 或 GPU)。默认值为当前设备。
- requires_grad (bool, optional): 如果为
True
,则输出张量会记录梯度。默认值为False
。
返回值
返回一个包含 steps
个元素的一维张量,这些元素在对数尺度上均匀分布。
示例
import torch
# 生成从 10^1 到 10^3 的 5 个对数均匀分布的数
tensor = torch.logspace(1, 3, steps=5, base=10.0)
print(tensor)
输出:
tensor([ 10., 31.6228, 100., 316.2278, 1000.])
解释
start=1
表示起始值为10^1 = 10
。end=3
表示结束值为10^3 = 1000
。steps=5
表示生成 5 个元素。base=10.0
表示对数的底数为 10。
生成的张量中的元素在对数尺度上是均匀分布的,即每个元素之间的比值是相同的。
注意事项
start
和end
是以base
为底的对数值,而不是实际的数值。- 如果
base
为e
(自然对数),则可以使用torch.logspace(start, end, steps=100, base=math.e)
。
应用场景
torch.logspace
通常用于生成在对数尺度上均匀分布的数值,例如在绘制对数坐标图、设置学习率调度器或生成频率范围时非常有用。