Machine Learning Library
CKernelCache.h
Go to the documentation of this file.
1 /*
2  COPYRIGHT (C) 2003 APPLIED NEUROINFORMATIC GROUP - UNIVERSITY OF BIELEFELD.
3 
4  ALL RIGHTS RESERVED.
5 
6  REDISTRIBUTION AND USE IN SOURCE AND BINARY FORM, WITH OR WITHOUT
7  MODIFICATION, REQUIRE THE PERMISSION OF THE COPYRIGHT HOLDERS.
8 
9  COMMERCIAL USE WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT HOLDERS
10  IS FORBIDDEN
11 
12  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
13  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
14  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15  ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
16  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
18  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
19  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
20  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
21  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 */
23 
24 
25 
26 #ifndef CKERNELCACHE_H
27 #define CKERNELCACHE_H
28 #include "CKernel.h"
29 #include "CDenseVector.h"
30 #include "CSVCandidate.h"
31 #include "CDataset.h"
32 #include "Macros.h"
33 #include <cmath>
34 #include <list>
35 #include <vector>
36 
37 
38 template<class Type>
39 class CKernelCache : public CObject<Type>{
40  struct TCachedItem {
41  int iIndex;
42  TCachedItem* ptPreItem;
43  TCachedItem* ptSucItem;
44  CDenseVector<Type>* ptKernelVector;
45  };
46 
47 
48 protected:
49  TCachedItem** pptCachedItems;
50  TCachedItem* ptStorageHead;
51  TCachedItem* ptStorageEnd;
52 
53  Type tCacheSize;
54  int iMaxRows;
57  Type tDTPos, tDTNeg;
59 
60 public:
61  vector< CSVCandidate<Type> >* ptDataset;
63 public:
64  CKernelCache( CKernel<Type>* pptKernel,
65  vector< CSVCandidate<Type> > *ptDataset,
66  Type tDTPos = 0, Type tDTNeg = 0,
67  Type tMaxMegaByte = 10);
68  ~CKernelCache();
69 
70  static void threadFunction(void* pvData);
71  const CDenseVector<Type>* requestRow(int i1, vector<int>* ptActiveCols = NULL);
72  void init();
73  void clear();
74  void calculateRow(CDenseVector<Type>* ptRow, int iIndex);
85  void reorganize(int iSubsetSize=-1);
86 
91  float fillState();
96  float freeSpace();
97 
102  void setCacheSize(Type tSize) {tCacheSize=tSize;};
103 
104  virtual string className() const { return "CKernelCache";};
105  virtual bool isA(const char* acClass) const { if(string(acClass) == this->className()) return true; else return CObject<Type>::isA(acClass);};
106 
107  void setDiagonalTerm(Type tDT);
108  void setDiagonalTerm(Type tDTPos, Type tDTNeg);
109 };
110 
111 
112 #endif
TCachedItem ** pptCachedItems
Definition: CKernelCache.h:49
int iNumItemsToUse
Definition: CKernelCache.h:56
void calculateRow(CDenseVector< Type > *ptRow, int iIndex)
Type tDTPos
Definition: CKernelCache.h:57
virtual bool isA(const char *acClass) const
Check if the object is an instance of the class with given name.
Definition: CKernelCache.h:105
void reorganize(int iSubsetSize=-1)
const CDenseVector< Type > * requestRow(int i1, vector< int > *ptActiveCols=NULL)
int iNumCachedRows
Definition: CKernelCache.h:55
void setDiagonalTerm(Type tDT)
TCachedItem * ptStorageHead
Definition: CKernelCache.h:50
float fillState()
void setKernel(CKernel< Type > *ptKernel)
int iMaxRows
Definition: CKernelCache.h:54
TCachedItem * ptStorageEnd
Definition: CKernelCache.h:51
virtual string className() const
Returns the class name.
Definition: CKernelCache.h:104
Definition: CKernelCache.h:39
Type tDTNeg
Definition: CKernelCache.h:57
Definition: CSVCandidate.h:59
Type tCacheSize
Definition: CKernelCache.h:53
Base class for kernel functions Base class for kernel function used for example by the support vector...
Definition: CKernel.h:46
static void threadFunction(void *pvData)
Template object for vectors of single and double precision and integer.
Definition: CDenseVector.h:37
bool bFastGaussian
Definition: CKernelCache.h:58
void setCacheSize(Type tSize)
Definition: CKernelCache.h:102
Base class for all object.
Definition: CObject.h:51
virtual bool isA(const char *acClass) const
Check if the object is an instance of the class with given name.
Definition: CObject.h:93
CKernelCache(CKernel< Type > *pptKernel, vector< CSVCandidate< Type > > *ptDataset, Type tDTPos=0, Type tDTNeg=0, Type tMaxMegaByte=10)
CKernel< Type > * ptKernel
Definition: CKernelCache.h:62
vector< CSVCandidate< Type > > * ptDataset
Definition: CKernelCache.h:61
float freeSpace()