分数幂

class torchhd.embeddings.FractionalPower(in_features: int, out_features: int, distribution: Distribution | Literal['sinc', 'gaussian'] = 'sinc', bandwidth: float = 1.0, vsa: Literal['HRR', 'FHRR'] = 'FHRR', device=None, dtype=None, requires_grad: bool = False)[来源]

用于分数幂编码(FPE)方法的类,该方法为给定值、核形状、带宽和维度形成超向量。实现了近似所需核形状的相似性保持超向量,如Computing on Functions Using Randomized Vector Representations中所述。

Parameters:
  • in_features (int) – 输入特征向量的维度。

  • out_features (int) – 超向量的维度。

  • distribution (str, optional) – 通过指定用于采样基础超向量的特定概率分布来定义核形状的超参数。默认值:"sinc"

  • 带宽 (浮点数, 可选) – 定义相似性核宽度的正超参数。较低的值会导致更宽的核,而较大的值会导致更窄的核。默认值:1.0

  • vsa – (VSAOptions, 可选): 指定要实例化的超向量类型。默认值: "FHRR".

  • dtype (torch.dtype, 可选) – 返回张量的期望数据类型。默认值:如果 None 则取决于 VSATensor。

  • device (torch.device, 可选) – 返回张量的期望设备。默认值:如果 None,则使用当前设备作为默认张量类型(参见 torch.set_default_tensor_type())。device 对于 CPU 张量类型将是 CPU,对于 CUDA 张量类型将是当前的 CUDA 设备。

  • requires_grad (bool, 可选) – 如果自动求导应该记录返回张量上的操作。默认值:False

示例:

>>> embed = embeddings.FractionalPower(1, 6, "sinc", 1.0, "FHRR")
>>> embed(torch.arange(1, 4, 1.).view(-1, 1))
FHRRTensor([[-0.7181-0.6959j, -0.5269+0.8499j, -0.0848+0.9964j,  0.9720-0.2348j,
      0.6358+0.7718j,  0.4352+0.9003j],
    [ 0.0314+0.9995j, -0.4447-0.8957j, -0.9856-0.1689j,  0.8897-0.4565j,
     -0.1915+0.9815j, -0.6212+0.7836j],
    [ 0.6730-0.7396j,  0.9956+0.0940j,  0.2519-0.9678j,  0.7576-0.6527j,
     -0.8793+0.4762j, -0.9759-0.2183j]])
basis()[来源]

返回基础超向量的值

forward(input: Tensor) Tensor[来源]

为给定值创建分数幂编码(FPE)。

Parameters:

input (Tensor) – 用于生成FPE超向量的值。可以是一个向量或一批向量。

Shapes:
  • 输入: \((*, f)\) 其中 f 是 in_features,* 是可选的批次维度。

  • 输出:\((*, d)\) 其中 d 是 out_features,* 是可选的批次维度。

reset_parameters() None[来源]

生成用于编码数据的基础超向量的角度。