IKMNoise.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * @file IKMNoise.h
  3. * @author Erik Rodner, Alexander Freytag
  4. * @brief Noise matrix (for model regularization) as an implicit kernel matrix (Interface)
  5. * @date 02/14/2012
  6. */
  7. #ifndef _NICE_IKMNOISEINCLUDE
  8. #define _NICE_IKMNOISEINCLUDE
  9. #include <vector>
  10. #include "ImplicitKernelMatrix.h"
  11. namespace NICE {
  12. /**
  13. * @class IKMNoise
  14. * @brief Noise matrix (for model regularization) as an implicit kernel matrix
  15. * @author Erik Rodner, Alexander Freytag
  16. */
  17. class IKMNoise : public ImplicitKernelMatrix
  18. {
  19. protected:
  20. uint size;
  21. double noise;
  22. bool optimizeNoise;
  23. /** give some debug outputs. There is not set function so far... */
  24. bool verbose;
  25. public:
  26. IKMNoise();
  27. IKMNoise( uint size, double noise, bool optimizeNoise );
  28. virtual ~IKMNoise();
  29. virtual void getDiagonalElements ( NICE::Vector & diagonalElements ) const;
  30. virtual void getFirstDiagonalElement ( double & diagonalElement ) const;
  31. virtual uint getNumParameters() const;
  32. virtual void getParameters( NICE::Vector & parameters) const;
  33. virtual void setParameters(const NICE::Vector & parameters);
  34. virtual bool outOfBounds(const NICE::Vector & parameters) const;
  35. virtual NICE::Vector getParameterLowerBounds() const;
  36. virtual NICE::Vector getParameterUpperBounds() const;
  37. /** multiply with a vector: A*x = y */
  38. virtual void multiply (NICE::Vector & y, const NICE::Vector & x) const;
  39. /** get the number of rows in A */
  40. virtual uint rows () const;
  41. /** get the number of columns in A */
  42. virtual uint cols () const;
  43. virtual double approxFrobNorm() const;
  44. virtual void setApproximationScheme(const int & _approxScheme) {};
  45. ///////////////////// INTERFACE PERSISTENT /////////////////////
  46. // interface specific methods for store and restore
  47. ///////////////////// INTERFACE PERSISTENT /////////////////////
  48. virtual void restore ( std::istream & is, int format = 0 );
  49. virtual void store ( std::ostream & os, int format = 0 ) const;
  50. virtual void clear () {};
  51. ///////////////////// INTERFACE ONLINE LEARNABLE /////////////////////
  52. // interface specific methods for incremental extensions
  53. ///////////////////// INTERFACE ONLINE LEARNABLE /////////////////////
  54. virtual void addExample( const NICE::SparseVector * example,
  55. const double & label,
  56. const bool & performOptimizationAfterIncrement = true
  57. );
  58. virtual void addMultipleExamples( const std::vector< const NICE::SparseVector * > & newExamples,
  59. const NICE::Vector & newLabels,
  60. const bool & performOptimizationAfterIncrement = true
  61. );
  62. };
  63. }
  64. #endif