in kbc/models.py [0:0]
def forward(self, x):
lhs = self.embeddings[0](x[:, 0])
rel = self.embeddings[1](x[:, 1])
rhs = self.embeddings[0](x[:, 2])
lhs = lhs[:, :self.rank], lhs[:, self.rank:]
rel = rel[:, :self.rank], rel[:, self.rank:]
rhs = rhs[:, :self.rank], rhs[:, self.rank:]
to_score = self.embeddings[0].weight
to_score = to_score[:, :self.rank], to_score[:, self.rank:]
return (
(lhs[0] * rel[0] - lhs[1] * rel[1]) @ to_score[0].transpose(0, 1) +
(lhs[0] * rel[1] + lhs[1] * rel[0]) @ to_score[1].transpose(0, 1)
), (
torch.sqrt(lhs[0] ** 2 + lhs[1] ** 2),
torch.sqrt(rel[0] ** 2 + rel[1] ** 2),
torch.sqrt(rhs[0] ** 2 + rhs[1] ** 2)
)