NodePiece表示法
- class NodePieceRepresentation(*, triples_factory: CoreTriplesFactory, token_representations: str | Representation | type[Representation] | None | Sequence[str | Representation | type[Representation] | None] = None, token_representations_kwargs: Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None] = None, tokenizers: str | Tokenizer | type[Tokenizer] | None | Sequence[str | Tokenizer | type[Tokenizer] | None] = None, tokenizers_kwargs: Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None] = None, num_tokens: int | Sequence[int] = 2, aggregation: None | str | Callable[[Tensor, int], Tensor] = None, max_id: int | None = None, **kwargs)[source]
-
节点片段分解的基本实现 [galkin2021]。
\[x_e = agg(\{T[t] \mid t \in tokens(e) \})\]其中 \(T\) 是令牌表示,\(tokens\) 为每个实体选择固定数量的 \(k\) 个令牌,而 \(agg\) 是一个聚合函数,它将各个令牌表示聚合为单个实体表示。
初始化表示。
- Parameters:
triples_factory (CoreTriplesFactory) – 三元组工厂
token_representations (str | Representation | type[Representation] | None | Sequence[str | Representation | type[Representation] | None]) – 令牌表示规范,或预实例化的表示模块。
token_representations_kwargs (Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None]) – 额外的基于关键字的参数
tokenizers (str | Tokenizer | type[Tokenizer] | None | Sequence[str | Tokenizer | type[Tokenizer] | None]) – 要使用的分词器,参见 pykeen.nn.node_piece.tokenizer_resolver。
tokenizers_kwargs (Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None]) – 在构建时传递给分词器的额外基于关键字的参数。
aggregation (None | str | Callable[[Tensor, int], Tensor]) –
将多个标记表示聚合为单个实体表示。默认情况下, 这使用
torch.mean()。如果提供了字符串,模块假设这是指顶层的 torch 函数,例如“mean”表示torch.mean(),或“sum”表示 func:torch.sum。聚合也可以 具有可训练的参数,例如MLP(mean(MLP(tokens)))(参见 [zaheer2017] 中的 DeepSets)。在 这种情况下,模块必须在此组件之外创建。我们也可以有导致不同形状输出的聚合,例如所有 标记嵌入的连接导致形状
(num_tokens * d,)。在这种情况下,必须提供 shape。聚合接受两个参数:标记表示的(批处理)张量,形状为
(*, num_tokens, *dt),以及要聚合的索引。max_id (int) – 仅传递此参数以检查三元组工厂中的实体数量是否相同
kwargs – 传递给
CombinedRepresentation.__init__()的额外基于关键字的参数
方法总结
通过它们的哈希值估计令牌的多样性。
方法文档
- estimate_diversity() HashDiversityInfo[来源]
通过它们的哈希值估计令牌的多样性。
- Returns:
比率信息元组
- Return type:
根据图结构和标记化参数,标记化策略可能会为多个节点生成完全相同的哈希值。相同的哈希值将导致相同的节点表示,从而可能抑制下游性能。当您需要估计在某种标记化策略下构建的节点哈希值的多样性时,此函数非常有用——理想情况下,您希望每个节点都有一个唯一的哈希值。该函数计算每个表示中以及总体上(如果我们将它们全部连接成一行)有多少节点哈希值是唯一的。1.0 表示所有节点都有唯一的哈希值。
示例用法:
from pykeen.model import NodePiece model = NodePiece( triples_factory=dataset.training, tokenizers=["AnchorTokenizer", "RelationTokenizer"], num_tokens=[20, 12], embedding_dim=64, interaction="rotate", relation_constrainer="complex_normalize", entity_initializer="xavier_uniform_", ) print(model.entity_representations[0].estimate_diversity())