哈希表
- 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.])
- add(key: VSATensor, value: VSATensor) None[来源]
向哈希表添加一个(键,值)对。
示例:
>>> letters = list(string.ascii_lowercase) >>> letters_hv = torchhd.random(len(letters), 10000) >>> values = functional.random(2, 10000) >>> H.add(letters_hv[0], values[0])
- classmethod from_tensors(keys: VSATensor, values: VSATensor)[来源]
从一组键和值超向量创建一个哈希表。
参见:
hash_table()。- 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.])