Linux下,利用conda安装faiss也比较简单,几个命令即可:
安装cpu版本
更新conda
conda update conda
先安装mkl
conda install mkl
安装faiss-cpu
conda install faiss-cpu -c pytorch
测试安装是否成功
python -c "import faiss"
聚类的时候,可以利用faiss自带的接口:
import faiss
import pickle
import numpy as np
import time
x = np.random.random((100000, 2048)).astype('float32')
ncentroids = 10
niter = 500
verbose = True
d = x.shape[1]
start_time = time.time()
'''
d:向量维度
ncentroids:聚类中心
niter:迭代次数
verbose:是否打印迭代情况
gpu:是否使用GPU
'''
kmeans = faiss.Kmeans(d, ncentroids, niter=niter, verbose=verbose, gpu=False)
kmeans.train(x)
train_time = time.time()
print(train_time - start_time)
cluster_cents = kmeans.centroids
cluster_wucha = kmeans.obj
print(cluster_cents) //各类中心点向量
print(cluster_wucha)
D, I = kmeans.index.search(x, 1)
print(np.unique(np.array(I))) # 共有1000张数据,形状为[1000,2048]
search_time = time.time()
print(search_time - train_time)
index = faiss.IndexFlatL2 (d)
index.add (x)
D, I = index.search (kmeans.centroids, 15)
print(D)
网友评论