in hype/graph.py [0:0]
def eval_reconstruction_slow(adj, lt, distfn):
ranks = []
ap_scores = []
for s, s_types in adj.items():
s_e = lt[s].expand_as(lt)
_dists = distfn(s_e, lt).data.cpu().numpy().flatten()
_dists[s] = 1e+12
_labels = np.zeros(lt.size(0))
_dists_masked = _dists.copy()
_ranks = []
for o in s_types:
_dists_masked[o] = np.Inf
_labels[o] = 1
for o in s_types:
d = _dists_masked.copy()
d[o] = _dists[o]
r = np.argsort(d)
_ranks.append(np.where(r == o)[0][0] + 1)
ranks += _ranks
ap_scores.append(
average_precision_score(_labels, -_dists)
)
return np.mean(ranks), np.mean(ap_scores)