边际分布基线
- 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=False和relation_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:
- 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: