边际分布基线

class MarginalDistributionBaseline(triples_factory: CoreTriplesFactory, entity_margin: bool = True, relation_margin: bool = True)[源代码]

基础类: EvaluationOnlyModel

基于边际分布的评分。

为了预测尾部的分数,我们对\(P(t | h, r)\)进行以下简化:

\[P(t | h, r) \sim P(t | h) * P(t | r)\]

根据设置,我们或者将\(P(t | *) = \frac{1}{n}\)设置为\(n\)是实体的数量,或者通过计算训练三元组中的出现次数来估计它们。

注意

此模型无法利用GPU加速,因为它在内部使用了scipy的稀疏矩阵。

初始化模型。

Parameters:
  • triples_factory (CoreTriplesFactory) – 包含训练三元组的三元组工厂。

  • entity_margin (bool) – 是否计算特定实体的边际分布

  • relation_margin (bool) – 是否计算关系特定的边际分布

如果你设置entity_margin=Falserelation_margin=False,将会导致一个均匀分布,即所有实体的得分相等。

方法总结

score_h(rt_batch, **kwargs)

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

score_t(hr_batch, **kwargs)

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

方法文档

score_h(rt_batch: Tensor, **kwargs) Tensor[source]

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

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

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

  • slice_size – >0 使用切片时,评分函数的除数。

  • mode – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

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

Returns:

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

Return type:

Tensor

score_t(hr_batch: Tensor, **kwargs) Tensor[来源]

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

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

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

  • slice_size – >0 使用切片时,评分函数的除数。

  • mode – 传递模式,在传导设置中为None,在归纳设置中为“training”、“validation”或“testing”之一。

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

Returns:

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

Return type:

Tensor