分数幂
- 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]])