多重集

class torchhd.structures.Multiset(dimensions: int, vsa: Literal['BSC', 'MAP', 'HRR', 'FHRR', 'BSBC', 'VTB', 'MCR'] = 'MAP', *, device=None, dtype=None)[来源]
class torchhd.structures.Multiset(input: VSATensor, *, size=0)

超向量多重集数据结构。

创建一个具有dim维度的空多重集或从输入张量创建。

Parameters:
  • dimensions (int) – 多重集的维度数。

  • vsa – (VSAOptions, 可选): 指定使用的超向量类型和操作 (默认: "MAP").

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

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

  • 输入 (VSATensor) – 表示多重集的张量。

  • size (int, optional) – 作为输入提供的多重集的大小。默认值:0

示例:

>>> M = structures.Multiset(10000)

>>> x = functional.random(1, 10000)
>>> M = structures.Multiset(x[0], size=1)
__len__() int[来源]

返回多重集的大小。

示例:

>>> len(M)
0
add(input: VSATensor) None[来源]

向多重集合中添加一个新的超向量(输入)。

Parameters:

输入 (VSATensor) – 要添加到多重集合的超向量。

示例:

>>> letters = list(string.ascii_lowercase)
>>> letters_hv = torchhd.random(len(letters), 10000)
>>> M.add(letters_hv[0])
clear() None[来源]

清空多重集

示例:

>>> M.clear()
contains(input: VSATensor) VSATensor[来源]

返回输入向量与多重集的余弦相似度。

Parameters:

input (VSATensor) – 用于与多重集进行比较的超向量。

示例:

>>> M.contains(letters_hv[0])
tensor(0.4575)
classmethod from_ngrams(input: VSATensor, n=3)[来源]

从一组超向量的n-gram创建多重集。

参见:ngrams()

Parameters:
  • 输入 (VSATensor) – 要转换为多重集的超向量集合。

  • n (int, optional) – 每个 \(n\)-gram 的大小,\(1 \leq n \leq m\)。默认值:3

示例:

>>> x = functional.random(5, 3)
>>> M = structures.Multiset.from_ngrams(x)
classmethod from_tensor(input: VSATensor)[来源]

从一组超向量创建一个多重集。

参见:multiset()

Parameters:

输入 (VSATensor) – 要转换为多重集的超向量集合。

示例:

>>> x = functional.random(3, 3)
>>> M = structures.Multiset.from_tensor(x)
remove(input: VSATensor) None[来源]

从多重集合中移除一个超向量(输入)。

Parameters:

input (VSATensor) – 要从多重集中移除的超向量。

示例:

>>> M.remove(letters_hv[0])