CustomKernel.cpp

Go to the documentation of this file.
00001 /*
00002  * This program is free software; you can redistribute it and/or modify
00003  * it under the terms of the GNU General Public License as published by
00004  * the Free Software Foundation; either version 3 of the License, or
00005  * (at your option) any later version.
00006  *
00007  * Written (W) 1999-2009 Soeren Sonnenburg
00008  * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max-Planck-Society
00009  */
00010 
00011 #include <shogun/lib/common.h>
00012 #include <shogun/kernel/CustomKernel.h>
00013 #include <shogun/features/Features.h>
00014 #include <shogun/features/DummyFeatures.h>
00015 #include <shogun/io/SGIO.h>
00016 
00017 using namespace shogun;
00018 
00019 void
00020 CCustomKernel::init(void)
00021 {
00022     m_parameters->add(&kmatrix, "kmatrix", "Kernel matrix.");
00023     m_parameters->add(&upper_diagonal, "upper_diagonal");
00024 }
00025 
00026 CCustomKernel::CCustomKernel()
00027 : CKernel(10), kmatrix(), upper_diagonal(false)
00028 {
00029     init();
00030 }
00031 
00032 CCustomKernel::CCustomKernel(CKernel* k)
00033 : CKernel(10)
00034 {
00035     set_full_kernel_matrix_from_full(k->get_kernel_matrix());
00036 }
00037 
00038 CCustomKernel::CCustomKernel(SGMatrix<float64_t> km)
00039 : CKernel(10), upper_diagonal(false)
00040 {
00041     init();
00042     set_full_kernel_matrix_from_full(km);
00043 }
00044 
00045 CCustomKernel::~CCustomKernel()
00046 {
00047     cleanup();
00048 }
00049 
00050 bool CCustomKernel::dummy_init(int32_t rows, int32_t cols)
00051 {
00052     return init(new CDummyFeatures(rows), new CDummyFeatures(cols));
00053 }
00054 
00055 bool CCustomKernel::init(CFeatures* l, CFeatures* r)
00056 {
00057     CKernel::init(l, r);
00058 
00059     SG_DEBUG( "num_vec_lhs: %d vs num_rows %d\n", l->get_num_vectors(), kmatrix.num_rows);
00060     SG_DEBUG( "num_vec_rhs: %d vs num_cols %d\n", r->get_num_vectors(), kmatrix.num_cols);
00061     ASSERT(l->get_num_vectors()==kmatrix.num_rows);
00062     ASSERT(r->get_num_vectors()==kmatrix.num_cols);
00063     return init_normalizer();
00064 }
00065 
00066 void CCustomKernel::cleanup_custom()
00067 {
00068     SG_DEBUG("cleanup up custom kernel\n");
00069     SG_FREE(kmatrix.matrix);
00070     kmatrix.matrix=NULL;
00071     upper_diagonal=false;
00072     kmatrix.num_cols=0;
00073     kmatrix.num_rows=0;
00074 }
00075 
00076 void CCustomKernel::cleanup()
00077 {
00078     cleanup_custom();
00079     CKernel::cleanup();
00080 }
00081 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation