Example #1
0
def ranking(types, model, distfn):
    lt = th.from_numpy(model.embedding())
    embedding = Variable(lt, requires_grad=True)
    with torch.no_grad():
        ranks = []
        ap_scores = []
        for s, s_types in types.items():
            s_e = Variable(lt[s].expand_as(embedding), requires_grad=True)
        with torch.no_grad():
            _dists = model.dist()(s_e, embedding).data.cpu().numpy().flatten()
        _dists[s] = 1e+12
        _labels = np.zeros(embedding.size(0))
        _dists_masked = _dists.copy()
        _ranks = []
        for o in s_types:
            _dists_masked[o] = np.Inf
            _labels[o] = 1
        ap_scores.append(average_precision_score(_labels, -_dists))
        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
    return np.mean(ranks), np.mean(ap_scores)
Example #2
0
        return tf.contrib.learn.InputFnOps(features, None,
                                           feature_placeholders)

    predictor = from_contrib_estimator(estimator=estimator,
                                       prediction_input_fn=prediction_input_fn,
                                       output_alternative_key="g_dvec")

    sess = tf.Session()
    print(predictor.fetch_tensors)
    wvec = [[[1, 2, 3], [4, 5, 6]]]
    dvec = [[[2, 3, 4], [5, 6, 7]]]
    i = 0
    g_wvec = [
        [
            model.dist(wvec[i][0], wvec[i][1]),
            model.dist(dvec[i][0], dvec[i][1])
        ],
    ]
    g_dvec = [
        [
            model.dist_r(wvec[i][0], wvec[i][1], dvec[i][0], dvec[i][1]),
            model.dist_r(wvec[i][0], dvec[i][1], wvec[i][0], dvec[i][1])
        ],
    ]

    features = {
        'wvec': wvec,
        'dvec': dvec,
    }
    print(predictor(features))