Exemple #1
0
    def encode(self, vals):
        dsub = self.ecdat['dsub']
        nsubq = self.ecdat['nsubq']
        centroids = self.ecdat['centroids']

        num_vals = vals.shape[0]
        codes = np.zeros((num_vals, nsubq), np.uint8)
        for q in range(nsubq):
            vsub = vals[:, q*dsub:(q+1)*dsub]
            codes[:, q] = pq_kmeans_assign(centroids[q], vsub)
        return codes
Exemple #2
0
    def encode(self, vals):
        # Here `copy()` can ensure that you DONOT modify the vals
        vals = vals.copy()

        coa_centroids = self.ecdat['coa_centroids']

        cids = pq_kmeans_assign(coa_centroids, vals)
        vals -= coa_centroids[cids, :]

        codes = super(IVFPQEncoder, self).encode(vals)
        return cids, codes
Exemple #3
0
    def encode(self, vals):
        dsub = self.ecdat['dsub']
        nsubq = self.ecdat['nsubq']
        centroids = self.ecdat['centroids']

        num_vals = vals.shape[0]
        codes = np.zeros((num_vals, nsubq), np.uint8)
        for q in range(nsubq):
            vsub = vals[:, q * dsub:(q + 1) * dsub]
            codes[:, q] = pq_kmeans_assign(centroids[q], vsub)
        return codes
Exemple #4
0
    def encode(self, vals):
        # Here `copy()` can ensure that you DONOT modify the vals
        vals = vals.copy()

        coa_centroids = self.ecdat['coa_centroids']

        cids = pq_kmeans_assign(coa_centroids, vals)
        vals -= coa_centroids[cids, :]

        codes = super(IVFPQEncoder, self).encode(vals)
        return cids, codes
Exemple #5
0
    def build(self, pardic=None):
        pardic['vals'] = pardic['vals'].copy()
        # training data
        vals = pardic['vals']
        # the number of coarse centroids
        coarsek = pardic.get('coarsek', 1024)

        logging.info('Building coarse quantizer - BEGIN')
        coa_centroids = kmeans(vals.astype(np.float32), coarsek, niter=100)
        cids = pq_kmeans_assign(coa_centroids, vals)
        logging.info('Building coarse quantizer - DONE')

        pardic['vals'] -= coa_centroids[cids, :]
        super(IVFPQEncoder, self).build(pardic)

        self.ecdat['coa_centroids'] = coa_centroids
        self.ecdat['coarsek'] = coarsek
Exemple #6
0
    def build(self, pardic=None):
        pardic['vals'] = pardic['vals'].copy()
        # training data
        vals = pardic['vals']
        # the number of coarse centroids
        coarsek = pardic.get('coarsek', 1024)

        logging.info('Building coarse quantizer - BEGIN')
        coa_centroids = kmeans(vals.astype(np.float32), coarsek, niter=100)
        cids = pq_kmeans_assign(coa_centroids, vals)
        logging.info('Building coarse quantizer - DONE')

        pardic['vals'] -= coa_centroids[cids, :]
        super(IVFPQEncoder, self).build(pardic)

        self.ecdat['coa_centroids'] = coa_centroids
        self.ecdat['coarsek'] = coarsek