BSCTensor

class torchhd.BSCTensor[来源]

二进制散列码

Binary spatter-coding of ordered K-tuples中提出,该模型使用二进制值超向量。

bind(other: BSCTensor) BSCTensor[来源]

使用XOR将超向量与其他绑定。

这会产生一个与两者都不相似的超向量。

绑定用于关联信息,例如,为变量赋值。

Parameters:

其他 (BSC) – 其他输入超向量

Shapes:
  • 自我: \((*)\)

  • 其他: \((*)\)

  • 输出: \((*)\)

示例:

>>> a, b = torchhd.BSCTensor.random(2, 10)
>>> a
tensor([ True, False,  True,  True, False,  True, False, False,  True, False])
>>> b
tensor([ True, False, False, False, False,  True, False, False, False, False])
>>> a.bind(b)
tensor([False, False,  True,  True, False, False, False, False,  True, False])

>>> a, b = torchhd.BSCTensor.random(2, 10, dtype=torch.long)
>>> a
tensor([1, 0, 0, 1, 0, 1, 0, 0, 0, 0])
>>> b
tensor([0, 0, 0, 1, 0, 0, 1, 0, 1, 0])
>>> a.bind(b)
tensor([1, 0, 0, 0, 0, 1, 1, 0, 1, 0])
bundle(other: BSCTensor, *, generator: Generator | None = None) BSCTensor[来源]

使用多数投票将超向量与其他捆绑在一起。

这会产生一个与两者极为相似的超向量。

捆绑操作用于将信息聚合到一个单一的超级向量中。

多数投票中的平局是随机打破的。为了获得确定性的结果,请提供一个随机数生成器。

Parameters:
  • 其他 (BSC) – 其他输入超向量

  • generator (torch.Generator, 可选) – 用于采样的伪随机数生成器。

Shapes:
  • 自我: \((*)\)

  • 其他: \((*)\)

  • 输出: \((*)\)

示例:

>>> a, b = torchhd.BSCTensor.random(2, 10)
>>> a
tensor([ True, False,  True, False, False,  True,  True, False,  True, False])
>>> b
tensor([ True, False, False,  True,  True, False, False,  True, False,  True])
>>> a.bundle(b)
tensor([ True, False,  True,  True, False,  True,  True, False, False, False])

>>> a, b = torchhd.BSCTensor.random(2, 10, dtype=torch.long)
>>> a
tensor([1, 0, 1, 1, 1, 0, 1, 1, 1, 1])
>>> b
tensor([1, 1, 1, 0, 0, 0, 1, 1, 0, 0])
>>> a.bundle(b)
tensor([1, 0, 1, 0, 0, 0, 1, 1, 0, 1])
cosine_similarity(others: BSCTensor, *, dtype=None) Tensor[来源]

与其他超向量的余弦相似度。

dot_similarity(others: BSCTensor, *, dtype=None) Tensor[来源]

与其他超向量的内积。

classmethod empty(num_vectors: int, dimensions: int, *, generator=None, dtype=torch.bool, device=None, requires_grad=False) BSCTensor[来源]

创建一组表示空集的超向量。

当与随机超向量\(x\)捆绑时,结果是\(\sim x\)。由于BSC模型的低精度,空集无法明确表示,因此返回的超向量与随机超向量相同。

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

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

  • generator (torch.Generator, 可选) – 用于采样的伪随机数生成器。

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

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

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

示例:

>>> torchhd.BSCTensor.empty(3, 6)
tensor([[False, False, False, False,  True,  True],
        [False,  True, False, False,  True,  True],
        [ True, False,  True,  True, False, False]])

>>> torchhd.BSCTensor.empty(3, 6, dtype=torch.long)
tensor([[0, 1, 0, 1, 0, 1],
        [0, 0, 1, 1, 0, 1],
        [0, 1, 1, 0, 1, 1]])
classmethod identity(num_vectors: int, dimensions: int, *, dtype=torch.bool, device=None, requires_grad=False) BSCTensor[来源]

创建一组身份超向量。

当与随机超向量 \(x\) 绑定时,结果是 \(x\)

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

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

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

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

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

示例:

>>> torchhd.BSCTensor.identity(3, 6)
tensor([[False, False, False, False, False, False],
        [False, False, False, False, False, False],
        [False, False, False, False, False, False]])

>>> torchhd.BSCTensor.identity(3, 6, dtype=torch.long)
tensor([[0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0]])
inverse() BSCTensor[来源]

反转超向量以进行绑定。

BSC中的每个超向量都是其自身的逆,因此这将返回自身的副本。

Shapes:
  • 自我: \((*)\)

  • 输出: \((*)\)

示例:

>>> a = torchhd.BSCTensor.random(1, 10)
>>> a
tensor([[False, False, False,  True,  True, False, False,  True,  True, False]])
>>> a.inverse()
tensor([[False, False, False,  True,  True, False, False,  True,  True, False]])

>>> a = torchhd.BSCTensor.random(1, 10, dtype=torch.long)
>>> a
tensor([[0, 1, 0, 1, 1, 1, 1, 0, 1, 1]])
>>> a.inverse()
tensor([[0, 1, 0, 1, 1, 1, 1, 0, 1, 1]])
multibind() BSCTensor[来源]

绑定多个超向量。

multibundle(*, generator: Generator | None = None) BSCTensor[来源]

捆绑多个超向量。

negative() BSCTensor[来源]

对捆绑逆的超向量进行取反。

Shapes:
  • 自我: \((*)\)

  • 输出: \((*)\)

示例:

>>> a = torchhd.BSCTensor.random(1, 10)
>>> a
tensor([[ True,  True,  True,  True, False, False, False,  True,  True,  True]])
>>> a.negative()
tensor([[False, False, False, False,  True,  True,  True, False, False, False]])

>>> a = torchhd.BSCTensor.random(1, 10, dtype=torch.long)
>>> a
tensor([[0, 1, 0, 1, 0, 0, 1, 1, 0, 1]])
>>> a.negative()
tensor([[1, 0, 1, 0, 1, 1, 0, 0, 1, 0]])
normalize() BSCTensor[来源]

归一化超向量。

在BSC超向量上的每个操作都确保其保持归一化,因此这将返回自身的副本。

Shapes:
  • 自我: \((*)\)

  • 输出: \((*)\)

示例:

>>> x = torchhd.BSCTensor.random(4, 6).multibundle()
>>> x
BSCTensor([ True, False, False, False, False, False])
>>> x.normalize()
BSCTensor([ True, False, False, False, False, False])
permute(shifts: int = 1) BSCTensor[来源]

置换超向量。

排列运算符通常用于为超向量分配顺序。

Parameters:

shifts (int, optional) – 张量元素移动的位置数。

Shapes:
  • 自我: \((*)\)

  • 输出: \((*)\)

示例:

>>> a = torchhd.BSCTensor.random(1, 10)
>>> a
tensor([[ True, False, False, False, False, False, False, False, False, False]])
>>> a.permute()
tensor([[False,  True, False, False, False, False, False, False, False, False]])

>>> a = torchhd.BSCTensor.random(1, 10, dtype=torch.long)
>>> a
tensor([[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]])
>>> a.permute()
tensor([[1, 1, 1, 0, 0, 1, 1, 0, 0, 1]])
classmethod random(num_vectors: int, dimensions: int, *, sparsity=0.5, generator=None, dtype=torch.bool, device=None, requires_grad=False) BSCTensor[来源]

创建一组随机独立的超向量。

生成的高维向量是从dimensions维超空间中均匀随机采样的。

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

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

  • 稀疏度 (float, 可选) – 预期不活跃元素的比例。对复杂超向量没有影响。默认值:0.5

  • generator (torch.Generator, 可选) – 用于采样的伪随机数生成器。

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

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

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

示例:

>>> torchhd.BSCTensor.random(3, 6)
tensor([[ True, False, False, False,  True,  True],
        [False, False,  True, False, False, False],
        [False, False,  True,  True, False, False]])

>>> torchhd.BSCTensor.random(3, 6, sparsity=0.1)
tensor([[ True,  True,  True,  True,  True,  True],
        [False,  True,  True,  True,  True,  True],
        [ True,  True,  True,  True,  True,  True]])

>>> torchhd.BSCTensor.random(3, 6, dtype=torch.long)
tensor([[1, 1, 0, 0, 0, 1],
        [0, 1, 0, 0, 1, 1],
        [0, 1, 1, 0, 0, 0]])