in src/models.py [0:0]
def get_queries(self, queries, target='rhs'):
lhs = self.embeddings[0](queries[:, 0])
rel = self.embeddings[1](queries[:, 1])
rhs = self.embeddings[0](queries[:, 2])
lhs = lhs[:, :self.rank], lhs[:, self.rank:]
rel = rel[:, :self.rank], rel[:, self.rank:]
rhs = rhs[:, :self.rank], rhs[:, self.rank:]
if target == 'rhs':
return torch.cat([
lhs[0] * rel[0] - lhs[1] * rel[1],
lhs[0] * rel[1] + lhs[1] * rel[0]
], 1)
elif target == 'lhs':
return torch.cat([
rhs[0] * rel[0] + rhs[1] * rel[1],
rhs[1] * rel[0] - rhs[0] * rel[1]
], 1)
elif target == 'rel':
return torch.cat([
lhs[0] * rhs[0] + lhs[1] * rhs[1],
lhs[0] * rhs[1] - lhs[1] * rhs[0]
], 1)