Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Written (W) 2012 Heiko Strathmann
- */
- #include <shogun/features/streaming/StreamingDenseDataGenerator.h>
- using namespace shogun;
- template<class T>
- CStreamingDenseDataGenerator<T>::CStreamingDenseDataGenerator() :
- CStreamingDenseFeatures<T>()
- {
- init();
- }
- template<class T>
- CStreamingDenseDataGenerator<T>::~CStreamingDenseDataGenerator()
- {
- delete m_model_parameters;
- }
- template<class T>
- void CStreamingDenseDataGenerator<T>::init()
- {
- m_model_parameters=new Parameter();
- m_model=DGD_NONE;
- }
- template<class T>
- void CStreamingDenseDataGenerator<T>::set_mean_shift_model(T mean_shift,
- index_t dim)
- {
- /* re-create parmeter list and add specified parameters */
- delete m_model_parameters;
- m_model_parameters=new Parameter();
- m_model_parameters->add(&mean_shift, "mean_shift");
- m_model_parameters->add(&dim, "dim");
- m_model=DGD_MEAN_SHIFT;
- }
- template<class T>
- SGVector<T> CStreamingDenseDataGenerator<T>::generate_mean_shift_data(
- index_t dim, T mean_shift)
- {
- /* allocate space */
- SGVector<T> result=SGVector<T>(dim);
- /* fill with std normal data */
- for (index_t i=0; i<dim; ++i)
- result[i]=CMath::randn_double();
- /* mean shift in first dimension */
- result[0]+=mean_shift;
- return result;
- }
- template<class T>
- bool CStreamingDenseDataGenerator<T>::get_next_example()
- {
- bool result=true;
- /* these casts are safe due to the way the parameters were added above */
- switch (m_model)
- {
- case DGD_MEAN_SHIFT:
- {
- T mean_shift=*((T*)
- (m_model_parameters->get_parameter("mean_shift")->m_parameter));
- index_t dim=*((index_t*)
- (m_model_parameters->get_parameter("dim")->m_parameter));
- CStreamingDenseDataGenerator<T>::current_vector=
- generate_mean_shift_data(dim, mean_shift);
- break;
- }
- default:
- SG_SWARNING("%s::get_streamed_features(): no model specified!");
- result=false;
- break;
- }
- return result;
- }
- template class CStreamingDenseDataGenerator<bool>;
- template class CStreamingDenseDataGenerator<char>;
- template class CStreamingDenseDataGenerator<int8_t>;
- template class CStreamingDenseDataGenerator<uint8_t>;
- template class CStreamingDenseDataGenerator<int16_t>;
- template class CStreamingDenseDataGenerator<uint16_t>;
- template class CStreamingDenseDataGenerator<int32_t>;
- template class CStreamingDenseDataGenerator<uint32_t>;
- template class CStreamingDenseDataGenerator<int64_t>;
- template class CStreamingDenseDataGenerator<uint64_t>;
- template class CStreamingDenseDataGenerator<float32_t>;
- template class CStreamingDenseDataGenerator<float64_t>;
- template class CStreamingDenseDataGenerator<floatmax_t>;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement