All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
faiss::PCAMatrix Struct Reference

`#include <VectorTransform.h>`

Inheritance diagram for faiss::PCAMatrix:

## Public Member Functions

| PCAMatrix (int d_in=0, int d_out=0, float eigen_power=0, bool random_rotation=false)
void | train (Index::idx_t n, const float *x) override
void | copy_from (const PCAMatrix &other)
| copy pre-trained PCA matrix
void | prepare_Ab ()
| called after mean, PCAMat and eigenvalues are computed
Public Member Functions inherited from faiss::LinearTransform
| 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
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
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
Public Member Functions inherited from faiss::VectorTransform
| VectorTransform (int d_in=0, int d_out=0)
| ! output dimension
float * | apply (idx_t n, const float *x) const

## Public Attributes

float | eigen_power
bool | random_rotation
| random rotation after PCA
size_t | max_points_per_d
| ratio between # training vectors and dimension
int | balanced_bins
| try to distribute output eigenvectors in this many bins
std::vector< float > | mean
| Mean, size d_in.
std::vector< float > | eigenvalues
| eigenvalues of covariance matrix (= squared singular values)
std::vector< float > | PCAMat
| PCA matrix, size d_in * d_in.
Public Attributes inherited from faiss::LinearTransform
bool | have_bias
bool | is_orthonormal
| ! whether to use the bias term More...
std::vector< float > | A
| Transformation matrix, size d_out * d_in.
std::vector< float > | b
| bias vector, size d_out
bool | verbose
Public Attributes inherited from faiss::VectorTransform
int | d_in
int | d_out
| ! input dimension
bool | is_trained

## Additional Inherited Members

Public Types inherited from faiss::VectorTransform
typedef Index::idx_t | idx_t

## Detailed Description

Applies a principal component analysis on a set of vectors, with optionally whitening and random rotation.

Definition at line 132 of file VectorTransform.h.

## Member Function Documentation

void PCAMatrix::train | ( | Index::idx_t | n,
|  | const float * | x
| ) |  |

override virtual

train on n vectors. If n < d_in then the eigenvector matrix will be completed with 0s

Reimplemented from faiss::VectorTransform.

Definition at line 316 of file VectorTransform.cpp.

## Member Data Documentation

float faiss::PCAMatrix::eigen_power

after transformation the components are multiplied by eigenvalues^eigen_power

=0: no whitening =-2: full whitening

Definition at line 140 of file VectorTransform.h.

The documentation for this struct was generated from the following files:

- /data/users/matthijs/github_faiss/faiss/VectorTransform.h
- /data/users/matthijs/github_faiss/faiss/VectorTransform.cpp