SHOGUN
v1.1.0
|
The Custom Kernel allows for custom user provided kernel matrices.
For squared training matrices it allows to store only the upper triangle of the kernel to save memory: Full symmetric kernel matrices can be stored as is or can be internally converted into (or directly given in) upper triangle representation. Also note that values are stored as 32bit floats.
Definition at line 29 of file CustomKernel.h.
Public Member Functions | |
CCustomKernel () | |
CCustomKernel (CKernel *k) | |
CCustomKernel (SGMatrix< float64_t > km) | |
virtual | ~CCustomKernel () |
virtual bool | dummy_init (int32_t rows, int32_t cols) |
virtual bool | init (CFeatures *l, CFeatures *r) |
virtual void | cleanup () |
virtual EKernelType | get_kernel_type () |
virtual EFeatureType | get_feature_type () |
virtual EFeatureClass | get_feature_class () |
virtual const char * | get_name () const |
bool | set_triangle_kernel_matrix_from_triangle (SGVector< float64_t > tri_kernel_matrix) |
template<class T > | |
bool | set_triangle_kernel_matrix_from_triangle_generic (SGVector< T > tri_kernel_matrix) |
bool | set_triangle_kernel_matrix_from_full (SGMatrix< float64_t > full_kernel_matrix) |
template<class T > | |
bool | set_triangle_kernel_matrix_from_full_generic (SGMatrix< T > full_kernel_matrix) |
bool | set_full_kernel_matrix_from_full (SGMatrix< float32_t > full_kernel_matrix) |
bool | set_full_kernel_matrix_from_full (SGMatrix< float64_t > full_kernel_matrix) |
virtual int32_t | get_num_vec_lhs () |
virtual int32_t | get_num_vec_rhs () |
virtual bool | has_features () |
![]() | |
CKernel () | |
CKernel (int32_t size) | |
CKernel (CFeatures *l, CFeatures *r, int32_t size) | |
virtual | ~CKernel () |
float64_t | kernel (int32_t idx_a, int32_t idx_b) |
SGMatrix< float64_t > | get_kernel_matrix () |
virtual SGVector< float64_t > | get_kernel_col (int32_t j) |
virtual SGVector< float64_t > | get_kernel_row (int32_t i) |
template<class T > | |
SGMatrix< T > | get_kernel_matrix () |
virtual bool | set_normalizer (CKernelNormalizer *normalizer) |
virtual CKernelNormalizer * | get_normalizer () |
virtual bool | init_normalizer () |
void | load (CFile *loader) |
void | save (CFile *writer) |
CFeatures * | get_lhs () |
CFeatures * | get_rhs () |
bool | get_lhs_equals_rhs () |
virtual void | remove_lhs_and_rhs () |
virtual void | remove_lhs () |
virtual void | remove_rhs () |
takes all necessary steps if the rhs is removed from kernel | |
void | set_cache_size (int32_t size) |
int32_t | get_cache_size () |
void | list_kernel () |
bool | has_property (EKernelProperty p) |
virtual void | clear_normal () |
virtual void | add_to_normal (int32_t vector_idx, float64_t weight) |
EOptimizationType | get_optimization_type () |
virtual void | set_optimization_type (EOptimizationType t) |
bool | get_is_initialized () |
virtual bool | init_optimization (int32_t count, int32_t *IDX, float64_t *weights) |
virtual bool | delete_optimization () |
bool | init_optimization_svm (CSVM *svm) |
virtual float64_t | compute_optimized (int32_t vector_idx) |
virtual void | compute_batch (int32_t num_vec, int32_t *vec_idx, float64_t *target, int32_t num_suppvec, int32_t *IDX, float64_t *alphas, float64_t factor=1.0) |
float64_t | get_combined_kernel_weight () |
void | set_combined_kernel_weight (float64_t nw) |
virtual int32_t | get_num_subkernels () |
virtual void | compute_by_subkernel (int32_t vector_idx, float64_t *subkernel_contrib) |
virtual const float64_t * | get_subkernel_weights (int32_t &num_weights) |
virtual void | set_subkernel_weights (SGVector< float64_t > weights) |
![]() | |
CSGObject () | |
CSGObject (const CSGObject &orig) | |
virtual | ~CSGObject () |
virtual bool | is_generic (EPrimitiveType *generic) const |
template<class T > | |
void | set_generic () |
void | unset_generic () |
virtual void | print_serializable (const char *prefix="") |
virtual bool | save_serializable (CSerializableFile *file, const char *prefix="") |
virtual bool | load_serializable (CSerializableFile *file, const char *prefix="") |
void | set_global_io (SGIO *io) |
SGIO * | get_global_io () |
void | set_global_parallel (Parallel *parallel) |
Parallel * | get_global_parallel () |
void | set_global_version (Version *version) |
Version * | get_global_version () |
SGVector< char * > | get_modelsel_names () |
char * | get_modsel_param_descr (const char *param_name) |
index_t | get_modsel_param_index (const char *param_name) |
Protected Member Functions | |
virtual float64_t | compute (int32_t row, int32_t col) |
![]() | |
void | set_property (EKernelProperty p) |
void | unset_property (EKernelProperty p) |
void | set_is_initialized (bool p_init) |
int32_t | compute_row_start (int64_t offs, int32_t n, bool symmetric) |
virtual void | load_serializable_post () throw (ShogunException) |
virtual void | save_serializable_pre () throw (ShogunException) |
virtual void | save_serializable_post () throw (ShogunException) |
virtual void | register_params () |
![]() | |
virtual void | load_serializable_pre () throw (ShogunException) |
Protected Attributes | |
SGMatrix< float32_t > | kmatrix |
bool | upper_diagonal |
![]() | |
int32_t | cache_size |
cache_size in MB | |
KERNELCACHE_ELEM * | kernel_matrix |
CFeatures * | lhs |
feature vectors to occur on left hand side | |
CFeatures * | rhs |
feature vectors to occur on right hand side | |
bool | lhs_equals_rhs |
lhs | |
int32_t | num_lhs |
number of feature vectors on left hand side | |
int32_t | num_rhs |
number of feature vectors on right hand side | |
float64_t | combined_kernel_weight |
bool | optimization_initialized |
EOptimizationType | opt_type |
uint64_t | properties |
CKernelNormalizer * | normalizer |
Additional Inherited Members | |
![]() | |
SGIO * | io |
Parallel * | parallel |
Version * | version |
Parameter * | m_parameters |
Parameter * | m_model_selection_parameters |
![]() | |
template<class T > | |
static void * | get_kernel_matrix_helper (void *p) |
CCustomKernel | ( | ) |
default constructor
Definition at line 26 of file CustomKernel.cpp.
CCustomKernel | ( | CKernel * | k | ) |
constructor
compute custom kernel from given kernel matrix
k | kernel matrix |
Definition at line 32 of file CustomKernel.cpp.
CCustomKernel | ( | SGMatrix< float64_t > | km | ) |
constructor
sets full kernel matrix from full kernel matrix (from double precision floats)
km | kernel matrix |
Definition at line 38 of file CustomKernel.cpp.
|
virtual |
Definition at line 45 of file CustomKernel.cpp.
|
virtual |
|
protectedvirtual |
compute kernel function
row | row |
col | col |
Implements CKernel.
Definition at line 290 of file CustomKernel.h.
|
virtual |
initialize kernel with dummy features
Kernels always need feature objects assigned. As the custom kernel does not really require this it creates some magic dummy features that only know about the number of vectors
rows | features of left-hand side |
cols | features of right-hand side |
Definition at line 50 of file CustomKernel.cpp.
|
virtual |
return feature class the kernel can deal with
Implements CKernel.
Definition at line 97 of file CustomKernel.h.
|
virtual |
return feature type the kernel can deal with
Implements CKernel.
Definition at line 91 of file CustomKernel.h.
|
virtual |
return what type of kernel we are
Implements CKernel.
Definition at line 85 of file CustomKernel.h.
|
virtual |
return the kernel's name
Implements CSGObject.
Definition at line 103 of file CustomKernel.h.
|
virtual |
get number of vectors of lhs features
Reimplemented from CKernel.
Definition at line 259 of file CustomKernel.h.
|
virtual |
get number of vectors of rhs features
Reimplemented from CKernel.
Definition at line 268 of file CustomKernel.h.
|
virtual |
test whether features have been assigned to lhs and rhs
Reimplemented from CKernel.
Definition at line 277 of file CustomKernel.h.
initialize kernel
l | features of left-hand side |
r | features of right-hand side |
Reimplemented from CKernel.
Definition at line 55 of file CustomKernel.cpp.
set full kernel matrix from full kernel matrix
for float32
Definition at line 212 of file CustomKernel.h.
set full kernel matrix from full kernel matrix
for float64
Definition at line 229 of file CustomKernel.h.
set kernel matrix (only elements from upper triangle) from squared matrix
for float64's
Definition at line 166 of file CustomKernel.h.
bool set_triangle_kernel_matrix_from_full_generic | ( | SGMatrix< T > | full_kernel_matrix | ) |
set kernel matrix (only elements from upper triangle) from squared matrix
Definition at line 178 of file CustomKernel.h.
set kernel matrix (only elements from upper triangle) from elements of upper triangle (concat'd), including the main diagonal
small variant for floats64's, triangle needs to have less than 2**32 elements
tri_kernel_matrix | tri kernel matrix |
Definition at line 114 of file CustomKernel.h.
bool set_triangle_kernel_matrix_from_triangle_generic | ( | SGVector< T > | tri_kernel_matrix | ) |
set kernel matrix (only elements from upper triangle) from elements of upper triangle (concat'd), including the main diagonal
big variant, allowing the triangle to have more than 2**31-1 elements
tri_kernel_matrix | tri kernel matrix |
Definition at line 130 of file CustomKernel.h.
kernel matrix
Definition at line 322 of file CustomKernel.h.
|
protected |
upper diagonal
Definition at line 325 of file CustomKernel.h.