图表

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

基于超向量的图数据结构。

创建一个具有dim维度的空序列或从输入张量创建。

Parameters:
  • 维度 (int) – 图的维度数量。

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

  • directed (bool, 可选) – 指定图是否为有向图。默认值:False

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

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

  • 输入 (VSATensor) – 表示图超向量的张量。

示例:

>>> G = structures.Graph(10000, directed=True)
add_edge(node1: VSATensor, node2: VSATensor) None[来源]

向图中添加一条边。

如果指定了方向,则方向从第一个节点指向第二个节点。

Parameters:
  • node1 (VSATensor) – 表示边第一个节点的超向量。

  • node2 (VSATensor) – 表示边第二个节点的超向量。

示例:

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

清空图。

示例:

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

返回输入向量与图的归一化点相似度。

Parameters:

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

示例:

>>> e = G.encode_edge(letters_hv[0], letters_hv[1])
>>> G.contains(e)
tensor(1.)
encode_edge(node1: VSATensor, node2: VSATensor) VSATensor[来源]

返回边的编码。

如果指定了方向,则方向从第一个节点指向第二个节点。

Parameters:
  • node1 (VSATensor) – 表示边第一个节点的超向量。

  • node2 (VSATensor) – 表示边第二个节点的超向量。

示例:

>>> letters = list(string.ascii_lowercase)
>>> letters_hv = torchhd.random(len(letters), 10000)
>>> G.encode_edge(letters_hv[0], letters_hv[1])
tensor([-1.,  1., -1.,  ...,  1., -1., -1.])
classmethod from_edges(input: VSATensor, directed=False)[来源]

从 VSATensor 创建图形

参见:graph()

Parameters:
  • 输入 (VSATensor) – 包含共享边的节点超向量对的张量。

  • directed (bool, 可选) – 指定图是否为有向图。默认值:False

Examples::
>>> edges = torch.tensor([[0, 0, 1, 2], [1, 2, 2, 3]])
>>> node_embedding = embeddings.Random(4, 10000)
>>> edges_hv = node_embedding(edges)
>>> graph = structures.Graph.from_edges(edges_hv)
node_neighbors(input: VSATensor, outgoing=True) VSATensor[来源]

返回输入节点的节点邻居的多重集。

Parameters:
  • 输入 (VSATensor) – 表示节点的超向量。

  • 出站 (布尔型, 可选) – 如果为 True,则返回 input 有边指向的相邻节点。如果为 False,则返回有边指向 input 的相邻节点。这仅对有向图有效。默认值:True

示例:

>>> G.node_neighbors(letters_hv[0])
tensor([ 1.,  1.,  1.,  ..., -1., -1.,  1.])