Struct faiss::ITQTransform

struct ITQTransform : public faiss::VectorTransform

The full ITQ transform, including normalizations and PCA transformation

Public Functions

explicit ITQTransform(int d_in = 0, int d_out = 0, bool do_pca = false)
virtual void train(idx_t n, const float *x) override

Perform training on a representative set of vectors. Does nothing by default.

Parameters:
  • n – nb of training vectors

  • x – training vecors, size n * d

virtual void apply_noalloc(idx_t n, const float *x, float *xt) const override

apply the transformation and return the result in a provided matrix

Parameters:
  • n – number of vectors to transform

  • x – input vectors, size n * d_in

  • xt – output vectors, size n * d_out

virtual void check_identical(const VectorTransform &other) const override
float *apply(idx_t n, const float *x) const

apply the transformation and return the result in an allocated pointer

Parameters:
  • n – number of vectors to transform

  • x – input vectors, size n * d_in

Returns:

output vectors, size n * d_out

virtual void reverse_transform(idx_t n, const float *xt, float *x) const

reverse transformation. May not be implemented or may return approximate result

Public Members

std::vector<float> mean
bool do_pca
ITQMatrix itq
int max_train_per_dim

max training points per dimension

LinearTransform pca_then_itq
int d_in
int d_out

! input dimension

bool is_trained

set if the VectorTransform does not require training, or if training is done already