Struct faiss::LinearTransform
- 
struct LinearTransform : public faiss::VectorTransform
 Generic linear transformation, with bias term applied on output y = A * x + b
Subclassed by faiss::ITQMatrix, faiss::OPQMatrix, faiss::PCAMatrix, faiss::RandomRotationMatrix
Public Functions
- 
explicit LinearTransform(int d_in = 0, int d_out = 0, bool have_bias = false)
 both d_in > d_out and d_out < d_in are supported
- 
virtual void apply_noalloc(idx_t n, const float *x, float *xt) const override
 same as apply, but result is pre-allocated
- 
void transform_transpose(idx_t n, const float *y, float *x) const
 compute x = A^T * (x - b) is reverse transform if A has orthonormal lines
- 
virtual void reverse_transform(idx_t n, const float *xt, float *x) const override
 works only if is_orthonormal
- 
void set_is_orthonormal()
 compute A^T * A to set the is_orthonormal flag
- 
void print_if_verbose(const char *name, const std::vector<double> &mat, int n, int d) const
 
- 
virtual void check_identical(const VectorTransform &other) const override
 
- 
inline ~LinearTransform() override
 
- 
virtual void train(idx_t n, const float *x)
 Perform training on a representative set of vectors. Does nothing by default.
- Parameters:
 n – nb of training vectors
x – training vecors, size n * d
- 
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
Public Members
- 
bool have_bias
 
- 
bool is_orthonormal
 ! whether to use the bias term
check if matrix A is orthonormal (enables reverse_transform)
- 
std::vector<float> A
 Transformation matrix, size d_out * d_in.
- 
std::vector<float> b
 bias vector, size d_out
- 
bool verbose
 
- 
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
- 
explicit LinearTransform(int d_in = 0, int d_out = 0, bool have_bias = false)