Advertisement
Guest User

StreamingDenseDataGenerator.cpp

a guest
Sep 27th, 2012
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. /*
  2.  * This program is free software; you can redistribute it and/or modify
  3.  * it under the terms of the GNU General Public License as published by
  4.  * the Free Software Foundation; either version 3 of the License, or
  5.  * (at your option) any later version.
  6.  *
  7.  * Written (W) 2012 Heiko Strathmann
  8.  */
  9.  
  10. #include <shogun/features/streaming/StreamingDenseDataGenerator.h>
  11.  
  12. using namespace shogun;
  13.  
  14. template<class T>
  15. CStreamingDenseDataGenerator<T>::CStreamingDenseDataGenerator() :
  16.         CStreamingDenseDataGenerator<T>()
  17. {
  18.     init();
  19. }
  20.  
  21. template<class T>
  22. CStreamingDenseDataGenerator<T>::~CStreamingDenseDataGenerator()
  23. {
  24.     delete m_model_parameters;
  25. }
  26.  
  27. template<class T>
  28. void CStreamingDenseDataGenerator<T>::init()
  29. {
  30.     m_model_parameters=new Parameter();
  31.     m_model=DGD_NONE;
  32. }
  33.  
  34. template<class T>
  35. void CStreamingDenseDataGenerator<T>::set_mean_shift_model(T mean_shift,
  36.         index_t dim)
  37. {
  38.     /* re-create parmeter list and add specified parameters */
  39.     delete m_model_parameters();
  40.     m_model_parameters=new Parameter();
  41.     m_model_parameters->add(&mean_shift, "mean_shift");
  42.     m_model_parameters->add(&dim, "dim");
  43.  
  44.     m_model=DGD_MEAN_SHIFT;
  45. }
  46.  
  47. template<class T>
  48. SGVector<T> CStreamingDenseDataGenerator<T>::generate_mean_shift_data(
  49.         index_t dim, T mean_shift)
  50. {
  51.     /* allocate space */
  52.     SGVector<T> result=SGVector<T>(dim);
  53.  
  54.     /* fill with std normal data */
  55.     for (index_t i=0; i<dim; ++i)
  56.         result[i]=CMath::randn_double();
  57.  
  58.     /* mean shift in first dimension */
  59.     result[0]+=mean_shift;
  60.  
  61.     return result;
  62. }
  63.  
  64. template<class T>
  65. bool CStreamingDenseDataGenerator<T>::get_next_example()
  66. {
  67.     bool result=true;
  68.  
  69.     /* these casts are safe due to the way the parameters were added above */
  70.     switch (m_model)
  71.         {
  72.         case DGD_MEAN_SHIFT:
  73.             T mean_shift=*((T*)
  74.                     (m_model_parameters->get_parameter("mean_shift")->m_parameter));
  75.             index_t dim=*((index_t*)
  76.                     (m_model_parameters->get_parameter("dim")->m_parameter));
  77.  
  78.             CStreamingDenseDataGenerator<T>::current_vector=
  79.                     generate_mean_shift_data(dim, mean_shift);
  80.             break;
  81.         default:
  82.             SG_SWARNING("%s::get_streamed_features(): no model specified!");
  83.             result=false;
  84.             break;
  85.         }
  86.  
  87.     return result;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement