ER模型

class ERModel(*, triples_factory: KGInfo, interaction: str | Interaction[HeadRepresentation, RelationRepresentation, TailRepresentation] | type[Interaction[HeadRepresentation, RelationRepresentation, TailRepresentation]] | None, interaction_kwargs: Mapping[str, Any] | None = None, entity_representations: str | Representation | type[Representation] | None | Sequence[str | Representation | type[Representation] | None] = None, entity_representations_kwargs: Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None] = None, relation_representations: str | Representation | type[Representation] | None | Sequence[str | Representation | type[Representation] | None] = None, relation_representations_kwargs: Mapping[str, Any] | None | Sequence[Mapping[str, Any] | None] = None, skip_checks: bool = False, **kwargs)[source]

基础类: Generic[HeadRepresentation, RelationRepresentation, TailRepresentation], _NewAbstractModel

使用嵌入和交互模块的KGEMs的一个常用且有用的基础。

该模型不使用初始化后钩子来自动初始化其所有参数。相反,调用Model.reset_parameters_()发生在ERModel.__init__的末尾。这是可能的,因为所有可训练的参数都应在ERModel的子类中通过super().__init__()传递。

在子类中调用super().__init__()之后,仍然可以放置其他代码,例如注册正则化器(如在pykeen.models.ConvKBpykeen.models.TransH中所做的那样)。

初始化模块。

Parameters:
  • triples_factory (KGInfo) – 三元组工厂便于访问数据集。

  • 交互 (Interaction) – 交互模块(例如,TransE)

  • interaction_kwargs (OptionalKwargs) – 如果尚未实例化,则传递给交互模块构造函数的额外基于关键字的参数。

  • entity_representations (Sequence[Representation]) – 实体表示或表示序列

  • entity_representations_kwargs (OneOrManyOptionalKwargs) – 用于实例化实体表示的额外基于关键字的参数

  • relation_representations (Sequence[Representation]) – 关系表示或表示序列

  • relation_representations_kwargs (OneOrManyOptionalKwargs) – 用于实例化关系表示的额外基于关键字的参数

  • skip_checks (bool) – 是否跳过实体表示检查。

  • kwargs – 传递给基础模型的关键字参数

方法总结

append_weight_regularizer(parameter, regularizer)

将模型权重添加到正则化器的权重列表中,并将正则化器注册到模型中。

forward(h_indices, r_indices, t_indices[, ...])

前向传播。

score_h(rt_batch, *[, slice_size, mode, heads])

使用左侧(头部)预测进行前向传递。

score_hrt(hrt_batch, *[, mode])

前向传播。

score_r(ht_batch, *[, slice_size, mode, ...])

使用中间(关系)预测进行前向传递。

score_t(hr_batch, *[, slice_size, mode, tails])

使用右侧(尾部)预测进行前向传递。

方法文档

append_weight_regularizer(parameter: str | Parameter | Iterable[str | Parameter], regularizer: str | Regularizer | type[Regularizer] | None, regularizer_kwargs: Mapping[str, Any] | None = None, default_regularizer: str | Regularizer | type[Regularizer] | None = None, default_regularizer_kwargs: Mapping[str, Any] | None = None) None[来源]

将模型权重添加到正则化器的权重列表中,并将正则化器注册到模型中。

Parameters:
  • parameter (str | Parameter | Iterable[str | Parameter]) –

    参数,可以是名称,也可以是nn.Parameter对象。可用参数名称的列表可以通过以下方式显示:

    sorted(dict(self.named_parameters()).keys()).

  • regularizer (str | Regularizer | type[Regularizer] | None) – 正则化器或其提示

  • regularizer_kwargs (Mapping[str, Any] | None) – 用于正则化器实例化的额外基于关键字的参数

  • default_regularizer (str | Regularizer | type[Regularizer] | None) – 默认的正则化器;如果为None,则使用regularizer_default

  • default_regularizer_kwargs (Mapping[str, Any] | None) – 默认的正则化参数;如果为None,则使用 regularizer_default_kwargs

Raises:

KeyError – 如果提供了无效的参数名称

Return type:

forward(h_indices: Tensor, r_indices: Tensor, t_indices: Tensor, slice_size: int | None = None, slice_dim: int = 0, *, mode: Literal['training', 'validation', 'testing'] | None) Tensor[source]

前向传播。

该方法接受头、关系和尾索引,并计算相应的分数。 它支持广播。

Parameters:
  • h_indices (Tensor) – 头部索引。

  • r_indices (Tensor) – 关系索引。

  • t_indices (Tensor) – 尾部索引。

  • slice_size (int | None) – 切片大小。

  • slice_dim (int) – 沿着哪个维度进行切片

  • mode (Literal['training', 'validation', 'testing'] | None) – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

Returns:

分数

Raises:

NotImplementedError – 如果需要重复评分

Return type:

Tensor

score_h(rt_batch: Tensor, *, slice_size: int | None = None, mode: Literal['training', 'validation', 'testing'] | None = None, heads: Tensor | None = None) Tensor[source]

使用左侧(头部)预测进行前向传递。

此方法为每个(关系,尾部)对计算所有可能头部的分数。

Parameters:
  • rt_batch (Tensor) – 形状: (batch_size, 2), 数据类型: long (关系, 尾部) 对的索引。

  • slice_size (int | None) – >0 使用切片时评分函数的除数。

  • mode (Literal['training', 'validation', 'testing'] | None) – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

  • heads (Tensor | None) – 形状: (num_heads,) | (batch_size, num_heads) 要评分的目标头实体索引。如果为None,则对所有实体进行评分(从给定模式中)。

Returns:

形状: (batch_size, num_heads), 数据类型: float 对于每个r-t对,所有可能头部的分数。

Return type:

Tensor

score_hrt(hrt_batch: Tensor, *, mode: Literal['training', 'validation', 'testing'] | None = None) Tensor[来源]

前向传播。

该方法接受每个三元组的头、关系和尾,并计算相应的分数。

Parameters:
  • hrt_batch (Tensor) – 形状: (batch_size, 3), 数据类型: long (head, relation, tail) 三元组的索引。

  • mode (Literal['training', 'validation', 'testing'] | None) – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

Returns:

形状: (batch_size, 1), 数据类型: float 每个三元组的分数。

Return type:

Tensor

score_r(ht_batch: Tensor, *, slice_size: int | None = None, mode: Literal['training', 'validation', 'testing'] | None = None, relations: Tensor | None = None) Tensor[source]

使用中间(关系)预测进行前向传递。

此方法为每个(头,尾)对计算所有可能关系的分数。

Parameters:
  • ht_batch (Tensor) – 形状: (batch_size, 2), 数据类型: long (head, tail) 对的索引。

  • slice_size (int | None) – >0 使用切片时评分函数的除数。

  • mode (Literal['training', 'validation', 'testing'] | None) – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

  • relations (Tensor | None) – 形状: (num_relations,) | (batch_size, num_relations) 要评分的relation索引。如果为None,则对所有relations进行评分(从给定模式中)。

Returns:

形状: (batch_size, num_real_relations), 数据类型: float 对于每个h-t对,所有可能关系的分数。

Return type:

Tensor

score_t(hr_batch: Tensor, *, slice_size: int | None = None, mode: Literal['training', 'validation', 'testing'] | None = None, tails: Tensor | None = None) Tensor[source]

使用右侧(尾部)预测进行前向传递。

此方法为每个(头,关系)对计算所有可能尾部的分数。

Parameters:
  • hr_batch (Tensor) – 形状: (batch_size, 2), 数据类型: long (head, relation) 对的索引。

  • slice_size (int | None) – >0 使用切片时评分函数的除数。

  • mode (Literal['training', 'validation', 'testing'] | None) – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

  • tails (Tensor | None) – 形状: (num_tails,) | (batch_size, num_tails) 要评分的尾部实体索引。如果为None,则对所有实体进行评分(从给定模式中)。

Returns:

形状: (batch_size, num_tails), 数据类型: float 对于每个h-r对,所有可能尾部的分数。

Return type:

Tensor