diff --git a/tutorial/python/1-Flat.py b/tutorial/python/1-Flat.py index 7099e8db6..6e90dc3f1 100644 --- a/tutorial/python/1-Flat.py +++ b/tutorial/python/1-Flat.py @@ -4,7 +4,9 @@ # This source code is licensed under the BSD+Patents license found in the # LICENSE file in the root directory of this source tree. +from __future__ import print_function import numpy as np + d = 64 # dimension nb = 100000 # database size nq = 10000 # nb of queries @@ -16,16 +18,14 @@ xq[:, 0] += np.arange(nq) / 1000. import faiss # make faiss available index = faiss.IndexFlatL2(d) # build the index -print index.is_trained +print(index.is_trained) index.add(xb) # add vectors to the index -print index.ntotal +print(index.ntotal) k = 4 # we want to see 4 nearest neighbors D, I = index.search(xb[:5], k) # sanity check -print I -print D +print(I) +print(D) D, I = index.search(xq, k) # actual search -print I[:5] # neighbors of the 5 first queries -print I[-5:] # neighbors of the 5 last queries - - +print(I[:5]) # neighbors of the 5 first queries +print(I[-5:]) # neighbors of the 5 last queries diff --git a/tutorial/python/2-IVFFlat.py b/tutorial/python/2-IVFFlat.py index b47188483..feed5defa 100644 --- a/tutorial/python/2-IVFFlat.py +++ b/tutorial/python/2-IVFFlat.py @@ -4,7 +4,9 @@ # This source code is licensed under the BSD+Patents license found in the # LICENSE file in the root directory of this source tree. +from __future__ import print_function import numpy as np + d = 64 # dimension nb = 100000 # database size nq = 10000 # nb of queries @@ -20,15 +22,15 @@ nlist = 100 k = 4 quantizer = faiss.IndexFlatL2(d) # the other index index = faiss.IndexIVFFlat(quantizer, d, nlist, faiss.METRIC_L2) - # here we specify METRIC_L2, by default it performs inner-product search +# here we specify METRIC_L2, by default it performs inner-product search + assert not index.is_trained index.train(xb) assert index.is_trained index.add(xb) # add may be a bit slower as well D, I = index.search(xq, k) # actual search -print I[-5:] # neighbors of the 5 last queries +print(I[-5:]) # neighbors of the 5 last queries index.nprobe = 10 # default nprobe is 1, try a few more D, I = index.search(xq, k) -print I[-5:] # neighbors of the 5 last queries - +print(I[-5:]) # neighbors of the 5 last queries diff --git a/tutorial/python/3-IVFPQ.py b/tutorial/python/3-IVFPQ.py index 78a115806..636f20286 100644 --- a/tutorial/python/3-IVFPQ.py +++ b/tutorial/python/3-IVFPQ.py @@ -4,7 +4,9 @@ # This source code is licensed under the BSD+Patents license found in the # LICENSE file in the root directory of this source tree. +from __future__ import print_function import numpy as np + d = 64 # dimension nb = 100000 # database size nq = 10000 # nb of queries @@ -25,10 +27,8 @@ index = faiss.IndexIVFPQ(quantizer, d, nlist, m, 8) index.train(xb) index.add(xb) D, I = index.search(xb[:5], k) # sanity check -print I -print D +print(I) +print(D) index.nprobe = 10 # make comparable with experiment above D, I = index.search(xq, k) # search -print I[-5:] - - +print(I[-5:]) diff --git a/tutorial/python/4-GPU.py b/tutorial/python/4-GPU.py new file mode 100644 index 000000000..25e94c0df --- /dev/null +++ b/tutorial/python/4-GPU.py @@ -0,0 +1,38 @@ +# Copyright (c) 2015-present, Facebook, Inc. +# All rights reserved. +# +# This source code is licensed under the BSD+Patents license found in the +# LICENSE file in the root directory of this source tree. + +from __future__ import print_function +import numpy as np + +d = 64 # dimension +nb = 100000 # database size +nq = 10000 # nb of queries +np.random.seed(1234) # make reproducible +xb = np.random.random((nb, d)).astype('float32') +xb[:, 0] += np.arange(nb) / 1000. +xq = np.random.random((nq, d)).astype('float32') +xq[:, 0] += np.arange(nq) / 1000. + +import faiss # make faiss available + +print("number of GPUs:", faiss.get_num_gpus()) + +index = faiss.IndexFlatL2(d) # build the index + +res = faiss.StandardGpuResources() + +index = faiss.index_cpu_to_gpu(res, 0, index) + +index.add(xb) # add vectors to the index +print(index.ntotal) + +k = 4 # we want to see 4 nearest neighbors +D, I = index.search(xb[:5], k) # sanity check +print(I) +print(D) +D, I = index.search(xq, k) # actual search +print(I[:5]) # neighbors of the 5 first queries +print(I[-5:]) # neighbors of the 5 last queries