import nanopq import numpy as np N, Nt, D = 1000000, 100000, 128 X = np.random.random((N, D)).astype(np.float32) # 10,000 128-dim vectors to be indexed Xt = np.random.random((Nt, D)).astype(np.float32) # 2,000 128-dim vectors for training print('Xt') print(Xt.shape) query = np.random.random((D,)).astype(np.float32) # a 128-dim query vector #print(query) # Instantiate with M=8 sub-spaces pq = nanopq.PQ(M=16) # Train codewords pq.fit(Xt) print('pq') print(pq.codewords) with open('/Users/dl/Documents/bak/' + "codewords.txt", 'w') as fp: fp.write(str(pq.codewords)) print('codewords') print(np.array(pq.codewords).shape) # Encode to PQ-codes X_code = pq.encode(X) # (10000, 8) with dtype=np.uint8 print('X_code') print(X_code.shape) print(X_code) # Results: create a distance table online, and compute Asymmetric Distance to each PQ-code dists = pq.dtable(query).adist(X_code) dtable = pq.dtable(query) print('dtable') print(dtable.__sizeof__()) print(dtable) print('dists') print(dists.shape) print(dists)
乘积量化(PQ)算法的nanopq库python
最新推荐文章于 2024-10-18 15:44:13 发布