2020-09-22 faiss聚类接口

2020-09-22  本文已影响0人  snow_14b5

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)

上一篇 下一篇

猜你喜欢

热点阅读