身份

class torchhd.embeddings.Identity(num_embeddings: int, embedding_dim: int, vsa: Literal['BSC', 'MAP', 'HRR', 'FHRR', 'BSBC', 'VTB', 'MCR'] = 'MAP', requires_grad: bool = False, padding_idx: int | None = None, max_norm: float | None = None, norm_type: float = 2.0, scale_grad_by_freq: bool = False, sparse: bool = False, device=None, dtype=None, **kwargs)[来源]

嵌入围绕identity()的包装器。

类继承自Embedding并支持相同的关键字参数。

Parameters:
  • num_embeddings (int) – 生成的超向量数量。

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

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

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

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

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

示例:

>>> emb = embeddings.Identity(4, 6)
>>> idx = torch.LongTensor([0, 1, 3])
>>> emb(idx)
MAPTensor([[1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1., 1.]])

>>> emb = embeddings.Identity(4, 6, "HRR")
>>> idx = torch.LongTensor([0, 1, 3])
>>> emb(idx)
HRRTensor([[1., 0., 0., 0., 0., 0.],
           [1., 0., 0., 0., 0., 0.],
           [1., 0., 0., 0., 0., 0.]])
forward(input: Tensor) Tensor[来源]

定义每次调用时执行的计算。

应该由所有子类覆盖。

注意

尽管前向传递的配方需要在此函数内定义,但之后应该调用Module实例而不是这个,因为前者负责运行已注册的钩子,而后者则默默地忽略它们。