SHOGUN
6.0.0
|
shogun matrix
Definition at line 26 of file base/Parameter.h.
Public Types | |
typedef Eigen::Matrix< T,-1,-1, 0,-1,-1 > | EigenMatrixXt |
typedef Eigen::Map< EigenMatrixXt, 0, Eigen::Stride< 0, 0 > > | EigenMatrixXtMap |
typedef T | Scalar |
Public Member Functions | |
SGMatrix () | |
SGMatrix (bool ref_counting) | |
SGMatrix (T *m, index_t nrows, index_t ncols, bool ref_counting=true) | |
SGMatrix (T *m, index_t nrows, index_t ncols, index_t offset) | |
SGMatrix (index_t nrows, index_t ncols, bool ref_counting=true) | |
SGMatrix (GPUMemoryBase< T > *matrix, index_t nrows, index_t ncols) | |
bool | on_gpu () const |
SGMatrix (SGVector< T > vec) | |
SGMatrix (SGVector< T > vec, index_t nrows, index_t ncols) | |
SGMatrix (EigenMatrixXt &mat) | |
operator EigenMatrixXtMap () const | |
SGMatrix< T > & | operator= (const SGMatrix< T > &) |
SGMatrix (const SGMatrix &orig) | |
virtual | ~SGMatrix () |
T * | get_column_vector (index_t col) const |
SGVector< T > | get_row_vector (index_t row) const |
SGVector< T > | get_diagonal_vector () const |
const T & | operator() (index_t i_row, index_t i_col) const |
const T & | operator[] (index_t index) const |
T & | operator() (index_t i_row, index_t i_col) |
T & | operator[] (index_t index) |
const T & | get_element (index_t row, index_t col) |
void | set_element (const T &el, index_t row, index_t col) |
SGMatrix< T > | get () |
T * | data () const |
uint64_t | size () const |
SG_FORCED_INLINE bool | operator== (const SGMatrix< T > &other) const |
bool | equals (const SGMatrix< T > &other) const |
void | set_const (T const_elem) |
void | zero () |
bool | is_symmetric () const |
T | max_single () const |
SGMatrix< T > | clone () const |
void | compute_few_eigenvectors (double *matrix_, double *&eigenvalues, double *&eigenvectors, int n, int il, int iu) |
void | center () |
void | remove_column_mean () |
void | display_matrix (const char *name="matrix") const |
void | load (CFile *loader) |
void | save (CFile *saver) |
template<> | |
bool | equals (const SGMatrix< complex128_t > &other) const |
template<> | |
bool | is_symmetric () const |
template<> | |
complex128_t | max_single () const |
template<> | |
void | display_matrix (const bool *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const char *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const int8_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const uint8_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const int16_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const uint16_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const int32_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const uint32_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const int64_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const uint64_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const float32_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const float64_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const floatmax_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
void | display_matrix (const complex128_t *matrix, int32_t rows, int32_t cols, const char *name, const char *prefix) |
template<> | |
SGMatrix< char > | create_identity_matrix (index_t size, char scale) |
template<> | |
SGMatrix< int8_t > | create_identity_matrix (index_t size, int8_t scale) |
template<> | |
SGMatrix< uint8_t > | create_identity_matrix (index_t size, uint8_t scale) |
template<> | |
SGMatrix< bool > | create_identity_matrix (index_t size, bool scale) |
template<> | |
SGMatrix< int16_t > | create_identity_matrix (index_t size, int16_t scale) |
template<> | |
SGMatrix< uint16_t > | create_identity_matrix (index_t size, uint16_t scale) |
template<> | |
SGMatrix< int32_t > | create_identity_matrix (index_t size, int32_t scale) |
template<> | |
SGMatrix< uint32_t > | create_identity_matrix (index_t size, uint32_t scale) |
template<> | |
SGMatrix< int64_t > | create_identity_matrix (index_t size, int64_t scale) |
template<> | |
SGMatrix< uint64_t > | create_identity_matrix (index_t size, uint64_t scale) |
template<> | |
SGMatrix< float32_t > | create_identity_matrix (index_t size, float32_t scale) |
template<> | |
SGMatrix< float64_t > | create_identity_matrix (index_t size, float64_t scale) |
template<> | |
SGMatrix< floatmax_t > | create_identity_matrix (index_t size, floatmax_t scale) |
template<> | |
SGMatrix< complex128_t > | create_identity_matrix (index_t size, complex128_t scale) |
template<> | |
void | load (CFile *loader) |
template<> | |
void | save (CFile *saver) |
int32_t | ref_count () |
Static Public Member Functions | |
static T * | clone_matrix (const T *matrix, int32_t nrows, int32_t ncols) |
static void | transpose_matrix (T *&matrix, int32_t &num_feat, int32_t &num_vec) |
static void | create_diagonal_matrix (T *matrix, T *v, int32_t size) |
static SGMatrix< T > | create_identity_matrix (index_t size, T scale) |
static SGVector< float64_t > | compute_eigenvectors (SGMatrix< float64_t > matrix) |
static double * | compute_eigenvectors (double *matrix, int n, int m) |
static SGMatrix< float64_t > | matrix_multiply (SGMatrix< float64_t > A, SGMatrix< float64_t > B, bool transpose_A=false, bool transpose_B=false, float64_t scale=1.0) |
static void | inverse (SGMatrix< float64_t > matrix) |
inverses square matrix in-place More... | |
static float64_t * | pinv (float64_t *matrix, int32_t rows, int32_t cols, float64_t *target=NULL) |
static float64_t | trace (float64_t *mat, int32_t cols, int32_t rows) |
static T * | get_row_sum (T *matrix, int32_t m, int32_t n) |
static T * | get_column_sum (T *matrix, int32_t m, int32_t n) |
static void | center_matrix (T *matrix, int32_t m, int32_t n) |
static void | display_matrix (const T *matrix, int32_t rows, int32_t cols, const char *name="matrix", const char *prefix="") |
static void | display_matrix (const SGMatrix< T > matrix, const char *name="matrix", const char *prefix="") |
static SGMatrix< T > | get_allocated_matrix (index_t num_rows, index_t num_cols, SGMatrix< T > pre_allocated=SGMatrix< T >()) |
Public Attributes | |
T * | matrix |
index_t | num_rows |
index_t | num_cols |
std::shared_ptr< GPUMemoryBase< T > > | gpu_ptr |
Protected Member Functions | |
virtual void | copy_data (const SGReferencedData &orig) |
virtual void | init_data () |
virtual void | free_data () |
void | copy_refcount (const SGReferencedData &orig) |
int32_t | ref () |
int32_t | unref () |
Friends | |
class | LinalgBackendEigen |
typedef Eigen::Matrix<T,-1,-1,0,-1,-1> EigenMatrixXt |
Definition at line 43 of file SGMatrix.h.
typedef Eigen::Map<EigenMatrixXt,0,Eigen::Stride<0,0> > EigenMatrixXtMap |
Definition at line 44 of file SGMatrix.h.
typedef T Scalar |
The scalar type of the matrix
Definition at line 47 of file SGMatrix.h.
SGMatrix | ( | ) |
Default constructor
Definition at line 31 of file SGMatrix.cpp.
SGMatrix | ( | bool | ref_counting | ) |
Constructor for setting reference counting while not creating the matrix in memory (use this for static SGMatrix instances)
Definition at line 37 of file SGMatrix.cpp.
Constructor for setting params
Definition at line 43 of file SGMatrix.cpp.
Wraps a matrix around an existing memory segment with an offset
Definition at line 51 of file SGMatrix.cpp.
Constructor to create new matrix in memory
Definition at line 59 of file SGMatrix.cpp.
SGMatrix | ( | GPUMemoryBase< T > * | matrix, |
index_t | nrows, | ||
index_t | ncols | ||
) |
Construct SGMatrix from GPU memory.
vector | GPUMemoryBase pointer |
nrows | row number of the matrix |
ncols | column number of the matrix |
Definition at line 96 of file SGMatrix.cpp.
Constructor for creating a SGMatrix from a SGVector with refcounting. We do not copy the data here, just the pointer to data and the ref- count object of the SGVector (i.e. vec and this share same data and ref-count object).
This constructor assumes that the vector is the column 0 in the matrix.
vec | The SGVector |
Definition at line 67 of file SGMatrix.cpp.
Constructor for creating a SGMatrix from a SGVector with refcounting. We do not copy the data here, just the pointer to data and the ref- count object of the SGVector (i.e. vec and this share same data and ref-count object).
The number of elements in the matrix *MUST* be same as the number of elements in the vector
vec | The SGVector |
nrows | number of rows in the matrix |
ncols | number of columns in the matrix |
Definition at line 78 of file SGMatrix.cpp.
SGMatrix | ( | EigenMatrixXt & | mat | ) |
Wraps a matrix around the data of an Eigen3 matrix
Definition at line 110 of file SGMatrix.cpp.
Copy constructor
Definition at line 104 of file SGMatrix.cpp.
|
virtual |
Empty destructor
Definition at line 138 of file SGMatrix.cpp.
void center | ( | ) |
Centers the matrix, i.e. removes column/row mean from columns/rows
Definition at line 429 of file SGMatrix.cpp.
|
static |
Centers matrix (e.g. kernel matrix in feature space INPLACE
Definition at line 436 of file SGMatrix.cpp.
SGMatrix< T > clone | ( | ) | const |
Clone matrix
Definition at line 330 of file SGMatrix.cpp.
|
static |
Clone matrix
Definition at line 345 of file SGMatrix.cpp.
Compute eigenvalues and eigenvectors of symmetric matrix using LAPACK
matrix | symmetric matrix to compute eigenproblem. Is overwritten and contains orthonormal eigenvectors afterwards |
Definition at line 983 of file SGMatrix.cpp.
|
static |
Compute eigenvalues and eigenvectors of symmetric matrix
matrix | overwritten and contains n orthonormal eigenvectors |
n | |
m |
Definition at line 1001 of file SGMatrix.cpp.
void compute_few_eigenvectors | ( | double * | matrix_, |
double *& | eigenvalues, | ||
double *& | eigenvectors, | ||
int | n, | ||
int | il, | ||
int | iu | ||
) |
Compute few eigenpairs of a symmetric matrix using LAPACK DSYEVR method (Relatively Robust Representations). Has at least O(n^3/3) complexity
matrix_ | symmetric matrix |
eigenvalues | contains iu-il+1 eigenvalues in ascending order (to be free'd) |
eigenvectors | contains iu-il+1 orthonormal eigenvectors of given matrix column-wise (to be free'd) |
n | dimension of matrix |
il | low index of requested eigenpairs (1<=il<=n) |
iu | high index of requested eigenpairs (1<=il<=iu<=n) |
Definition at line 1023 of file SGMatrix.cpp.
|
protectedvirtual |
|
protectedinherited |
copy refcount
Definition at line 55 of file SGReferencedData.cpp.
|
static |
Create diagonal matrix
Definition at line 375 of file SGMatrix.cpp.
Returns the identity matrix, scaled by a factor
size | size of square identity matrix |
scale | (optional) scaling factor |
Definition at line 747 of file SGMatrix.cpp.
Definition at line 754 of file SGMatrix.cpp.
Definition at line 767 of file SGMatrix.cpp.
Definition at line 780 of file SGMatrix.cpp.
Definition at line 793 of file SGMatrix.cpp.
Definition at line 806 of file SGMatrix.cpp.
Definition at line 819 of file SGMatrix.cpp.
Definition at line 832 of file SGMatrix.cpp.
Definition at line 845 of file SGMatrix.cpp.
Definition at line 858 of file SGMatrix.cpp.
Definition at line 871 of file SGMatrix.cpp.
Definition at line 884 of file SGMatrix.cpp.
SGMatrix< floatmax_t > create_identity_matrix | ( | index_t | size, |
floatmax_t | scale | ||
) |
Definition at line 897 of file SGMatrix.cpp.
SGMatrix< complex128_t > create_identity_matrix | ( | index_t | size, |
complex128_t | scale | ||
) |
Definition at line 910 of file SGMatrix.cpp.
T* data | ( | ) | const |
The data
Definition at line 237 of file SGMatrix.h.
void display_matrix | ( | const char * | name = "matrix" | ) | const |
Display matrix
Definition at line 480 of file SGMatrix.cpp.
|
static |
Display matrix (useful for debugging)
|
static |
Display matrix
Definition at line 487 of file SGMatrix.cpp.
void display_matrix | ( | const bool * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 495 of file SGMatrix.cpp.
void display_matrix | ( | const char * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 513 of file SGMatrix.cpp.
void display_matrix | ( | const int8_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 531 of file SGMatrix.cpp.
void display_matrix | ( | const uint8_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 549 of file SGMatrix.cpp.
void display_matrix | ( | const int16_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 567 of file SGMatrix.cpp.
void display_matrix | ( | const uint16_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 585 of file SGMatrix.cpp.
void display_matrix | ( | const int32_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 604 of file SGMatrix.cpp.
void display_matrix | ( | const uint32_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 622 of file SGMatrix.cpp.
void display_matrix | ( | const int64_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 639 of file SGMatrix.cpp.
void display_matrix | ( | const uint64_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 657 of file SGMatrix.cpp.
void display_matrix | ( | const float32_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 675 of file SGMatrix.cpp.
void display_matrix | ( | const float64_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 693 of file SGMatrix.cpp.
void display_matrix | ( | const floatmax_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 711 of file SGMatrix.cpp.
void display_matrix | ( | const complex128_t * | matrix, |
int32_t | rows, | ||
int32_t | cols, | ||
const char * | name, | ||
const char * | prefix | ||
) |
Definition at line 729 of file SGMatrix.cpp.
bool equals | ( | const SGMatrix< complex128_t > & | other | ) | const |
Definition at line 189 of file SGMatrix.cpp.
bool equals | ( | const SGMatrix< T > & | other | ) | const |
Operator overload for element-wise matrix comparison. Note that only numerical data is compared. Works for floating point numbers (along with complex128_t) as well.
other | matrix to compare with |
Definition at line 144 of file SGMatrix.cpp.
|
protectedvirtual |
SGMatrix<T> get | ( | ) |
Get the matrix (no copying is done here)
Definition at line 231 of file SGMatrix.h.
|
static |
Simple helper method that returns a matrix with allocated memory for a given size. A pre_allocated one can optionally be specified in order to use that. Basically just for having dimension check encapsulated.
num_rows | rows of returned matrix |
num_cols | columns of returned matrix |
pre_allocated | optional matrix that is returned instead of new matrix. Make sure dimensions match |
Definition at line 1090 of file SGMatrix.cpp.
|
static |
Sums up all columns of a matrix and returns the resulting columnvector
Definition at line 416 of file SGMatrix.cpp.
T* get_column_vector | ( | index_t | col | ) | const |
Get a column vector
col | column index |
Definition at line 140 of file SGMatrix.h.
SGVector< T > get_diagonal_vector | ( | ) | const |
Get a main diagonal vector. Matrix is not required to be square.
Definition at line 1200 of file SGMatrix.cpp.
Get element at index
row | row index |
col | column index |
Definition at line 208 of file SGMatrix.h.
|
static |
Sums up all rows of a matrix and returns the resulting rowvector
Definition at line 402 of file SGMatrix.cpp.
Get a row vector
row | row index |
Definition at line 1188 of file SGMatrix.cpp.
|
protectedvirtual |
overridden to initialize empty data
Implements SGReferencedData.
Definition at line 1131 of file SGMatrix.cpp.
inverses square matrix in-place
Inverses square matrix in-place
Definition at line 972 of file SGMatrix.cpp.
bool is_symmetric | ( | ) | const |
Definition at line 284 of file SGMatrix.cpp.
bool is_symmetric | ( | ) | const |
Checks whether the matrix is symmetric or not. The equality check is performed using '==' operators for discrete types (int, char, bool) and using CMath::fequals method for floating types (float, double, long double, std::complex<double>) with default espilon values from std::numeric_limits
Definition at line 227 of file SGMatrix.cpp.
void load | ( | CFile * | loader | ) |
Load matrix from file
loader | File object via which to load data |
Definition at line 1150 of file SGMatrix.cpp.
void load | ( | CFile * | loader | ) |
Definition at line 1166 of file SGMatrix.cpp.
|
static |
Computes scale* A*B, where A and B may be transposed. Asserts for matching inner dimensions.
A | matrix A |
transpose_A | optional whether A should be transposed before |
B | matrix B |
transpose_B | optional whether B should be transposed before |
scale | optional scaling factor for result |
Definition at line 1037 of file SGMatrix.cpp.
T max_single | ( | ) | const |
Definition at line 311 of file SGMatrix.cpp.
complex128_t max_single | ( | ) | const |
Definition at line 323 of file SGMatrix.cpp.
bool on_gpu | ( | ) | const |
Check whether data is stored on GPU
Definition at line 79 of file SGMatrix.h.
operator EigenMatrixXtMap | ( | ) | const |
Wraps an Eigen3 matrix around the data of this matrix
Definition at line 118 of file SGMatrix.cpp.
Operator overload for matrix read only access
i_row | |
i_col |
Definition at line 164 of file SGMatrix.h.
Operator overload for matrix r/w access
i_row | |
i_col |
Definition at line 184 of file SGMatrix.h.
Copy assign operator
Definition at line 125 of file SGMatrix.cpp.
SG_FORCED_INLINE bool operator== | ( | const SGMatrix< T > & | other | ) | const |
Check for pointer identity
Definition at line 250 of file SGMatrix.h.
const T& operator[] | ( | index_t | index | ) | const |
Operator overload for matrix read only access
index | to access |
Definition at line 174 of file SGMatrix.h.
T& operator[] | ( | index_t | index | ) |
Operator overload for matrix r/w access
index | to access |
Definition at line 194 of file SGMatrix.h.
|
static |
Return the pseudo inverse for matrix when matrix has shape (rows, cols) the pseudo inverse has (cols, rows)
Definition at line 933 of file SGMatrix.cpp.
|
protectedinherited |
increase reference counter
Definition at line 64 of file SGReferencedData.cpp.
|
inherited |
display reference counter
Definition at line 41 of file SGReferencedData.cpp.
void remove_column_mean | ( | ) |
Remove column mean
Definition at line 461 of file SGMatrix.cpp.
void save | ( | CFile * | saver | ) |
Save matrix to file
saver | File object via which to save data |
Definition at line 1172 of file SGMatrix.cpp.
void save | ( | CFile * | saver | ) |
Definition at line 1182 of file SGMatrix.cpp.
void set_const | ( | T | const_elem | ) |
Set matrix to a constant
Definition at line 209 of file SGMatrix.cpp.
Set element at index
el | element to set |
row | row index |
col | column index |
Definition at line 219 of file SGMatrix.h.
uint64_t size | ( | ) | const |
The size
Definition at line 243 of file SGMatrix.h.
Compute trace
Definition at line 391 of file SGMatrix.cpp.
|
static |
Transpose matrix
Definition at line 358 of file SGMatrix.cpp.
|
protectedinherited |
decrement reference counter and deallocate object if refcount is zero before or after decrementing it
Definition at line 84 of file SGReferencedData.cpp.
void zero | ( | ) |
fill matrix with zeros
Definition at line 221 of file SGMatrix.cpp.
|
friend |
Definition at line 40 of file SGMatrix.h.
std::shared_ptr<GPUMemoryBase<T> > gpu_ptr |
GPU Matrix structure. Stores pointer to the data on GPU.
Definition at line 467 of file SGMatrix.h.
T* matrix |
matrix
Definition at line 461 of file SGMatrix.h.
index_t num_cols |
number of columns of matrix
Definition at line 465 of file SGMatrix.h.
index_t num_rows |
number of rows of matrix
Definition at line 463 of file SGMatrix.h.