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.ConvKB和pykeen.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_defaultdefault_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:
- Returns:
分数
- Raises:
NotImplementedError – 如果需要重复评分
- Return type:
- 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:
- score_hrt(hrt_batch: Tensor, *, mode: Literal['training', 'validation', 'testing'] | None = None) 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:
- 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: