哈希表

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

超向量哈希表数据结构。

创建一个具有dim维度的空哈希表或从输入张量创建哈希表。

Parameters:
  • 维度 (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, 可选) – 作为输入提供的哈希表的大小。默认值:0

示例:

>>> H = structures.HashTable(10000)

>>> x = functional.random(3, 10000)
>>> M = structures.HashTable(x)
__getitem__(key: VSATensor) VSATensor[来源]

从哈希表中的键获取近似值。

Parameters:

key (VSATensor) – 用作查找其值的超向量。

示例:

>>> H[letters_hv[0]]
tensor([ 1., -1.,  1.,  ..., -1.,  1., -1.])
__len__() int[来源]

返回哈希表的大小。

示例:

>>> len(H)
0
add(key: VSATensor, value: VSATensor) None[来源]

向哈希表添加一个(键,值)对。

Parameters:
  • key (VSATensor) – 用作添加键值对的键的超向量。

  • value (VSATensor) – 要作为值添加到哈希表中的张量

示例:

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

清空哈希表。

示例:

>>> H.clear()
classmethod from_tensors(keys: VSATensor, values: VSATensor)[来源]

从一组键和值超向量创建一个哈希表。

参见:hash_table()

Parameters:
  • keys (VSATensor) – 要添加到哈希表中的一组关键超向量。

  • values (VSATensor) – 要添加到哈希表中的值超向量集合。

Examples::
>>> letters_hv = torchhd.random(len(letters), 10000)
>>> values = torchhd.random(len(letters), 10000)
>>> H = structures.HashTable.from_tensors(letters_hv, values)
get(key: VSATensor) VSATensor[来源]

从哈希表中的键获取近似值。

Parameters:

key (VSATensor) – 用作查找其值的超向量。

示例:

>>> H.get(letters_hv[0])
tensor([ 1., -1.,  1.,  ..., -1.,  1., -1.])
remove(key: VSATensor, value: VSATensor) None[来源]

从哈希表中移除一个(键,值)对。

Parameters:
  • key (VSATensor) – 用作删除键值对的键的超向量。

  • value (VSATensor) – 与键相关联的要移除的张量

示例:

>>> H.remove(letters_hv[0], values[0])
replace(key: VSATensor, old: VSATensor, new: VSATensor) None[来源]

替换哈希表中键值对的值。

Parameters:
  • key (VSATensor) – 用作查找其值的超向量。

  • 旧值 (VSATensor) – 旧值超向量。

  • new (VSATensor) – 新的值超向量。

示例:

>>> H.replace(letters_hv[0], values[0], values[1])