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。

生成的张量中的元素在对数尺度上是均匀分布的,即每个元素之间的比值是相同的。

注意事项

  • startend 是以 base 为底的对数值,而不是实际的数值。
  • 如果 basee(自然对数),则可以使用 torch.logspace(start, end, steps=100, base=math.e)

应用场景

torch.logspace 通常用于生成在对数尺度上均匀分布的数值,例如在绘制对数坐标图、设置学习率调度器或生成频率范围时非常有用。