def test_searcher(): data = pkl.load(open(relpath('./testdata/test_searcher_data.pkl'))) m = LOPQModel.load_proto(relpath('./testdata/random_test_model.lopq')) q = np.ones(8) # Test add_data searcher = LOPQSearcher(m) searcher.add_data(data) searcher_instance_battery(searcher, q) # Test add_codes searcher = LOPQSearcher(m) codes = [m.predict(x) for x in data] searcher.add_codes(codes) searcher_instance_battery(searcher, q)
def test_searcher(): data = pkl.load(open(relpath('./testdata/test_searcher_data.pkl'))) m = LOPQModel.load_proto(relpath('./testdata/random_test_model.lopq')) searcher = LOPQSearcher(m) searcher.add_data(data) q = np.ones(8) retrieved, visited = searcher.get_result_quota(q) assert_equal(len(retrieved), 12) assert_equal(visited, 3) retrieved, visited = searcher.get_result_quota(q, quota=20) assert_equal(len(retrieved), 28) assert_equal(visited, 5)
def test_searcher(): data = pkl.load(open(relpath("./testdata/test_searcher_data.pkl"))) m = LOPQModel.load_proto(relpath("./testdata/random_test_model.lopq")) searcher = LOPQSearcher(m) searcher.add_data(data) q = np.ones(8) retrieved, visited = searcher.get_result_quota(q) assert_equal(len(retrieved), 12) assert_equal(visited, 3) retrieved, visited = searcher.get_result_quota(q, quota=20) assert_equal(len(retrieved), 28) assert_equal(visited, 5)
def test_oxford5k(): random_state = 40 data = load_oxford_data() train, test = train_test_split(data, test_size=0.2, random_state=random_state) # Compute distance-sorted neighbors in training set for each point in test set nns = compute_all_neighbors(test, train) # Fit model m = LOPQModel(V=16, M=8) m.fit(train, n_init=1, random_state=random_state) # Assert correct code computation assert_equal(m.predict(test[0]), ((3, 2), (14, 164, 83, 49, 185, 29, 196, 250))) # Assert low number of empty cells h = get_cell_histogram(train, m) assert_equal(np.count_nonzero(h == 0), 6) # Assert true NN recall on test set searcher = LOPQSearcher(m) searcher.add_data(train) recall, _ = get_recall(searcher, test, nns) assert_true(np.all(recall > [0.51, 0.92, 0.97, 0.97])) # Test partial fitting with just coarse quantizers m2 = LOPQModel(V=16, M=8, parameters=(m.Cs, None, None, None)) m2.fit(train, n_init=1, random_state=random_state) searcher = LOPQSearcher(m2) searcher.add_data(train) recall, _ = get_recall(searcher, test, nns) assert_true(np.all(recall > [0.51, 0.92, 0.97, 0.97])) # Test partial fitting with coarse quantizers and rotations m3 = LOPQModel(V=16, M=8, parameters=(m.Cs, m.Rs, m.mus, None)) m3.fit(train, n_init=1, random_state=random_state) searcher = LOPQSearcher(m3) searcher.add_data(train) recall, _ = get_recall(searcher, test, nns) assert_true(np.all(recall > [0.51, 0.92, 0.97, 0.97]))