图表
- 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[来源]
向图中添加一条边。
如果指定了方向,则方向从第一个节点指向第二个节点。
示例:
>>> letters = list(string.ascii_lowercase) >>> letters_hv = torchhd.random(len(letters), 10000) >>> G.add_edge(letters_hv[0], letters_hv[1])
- 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[来源]
返回边的编码。
如果指定了方向,则方向从第一个节点指向第二个节点。
示例:
>>> 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)