diff --git a/src/machineLearning/rapidGVF/rapidGVF.h b/src/machineLearning/rapidGVF/rapidGVF.h index 88e667a69cc9c5425618206a38c14baa7e68bfb9..f42472f5ff261ff06f6bf8fa44464d3d2ff5b8ed 100644 --- a/src/machineLearning/rapidGVF/rapidGVF.h +++ b/src/machineLearning/rapidGVF/rapidGVF.h @@ -19,15 +19,15 @@ namespace rapidmix { class trainingData; } * @brief This class is an adapter for the GVF library from Baptiste Caramiaux */ class rapidGVF { - + public: rapidGVF(); ~rapidGVF(); - + bool train(const rapidmix::trainingData &newTrainingData); std::vector<double> run(const std::vector<double> &inputVector); //TODO: needs a "reset" message - + protected: GVF * gvf; GVFGesture currentGesture; diff --git a/src/machineLearning/rapidXMM/rapidXMM.cpp b/src/machineLearning/rapidXMM/rapidXMM.cpp index a65780e5788e8f7e6d409cc2eda9e1a4a758f737..9d4fc5a259a2bd63958a039ef3c0b24a138f9291 100644 --- a/src/machineLearning/rapidXMM/rapidXMM.cpp +++ b/src/machineLearning/rapidXMM/rapidXMM.cpp @@ -143,7 +143,6 @@ bool xmmTool<SingleClassModel, Model>::readJSON(const std::string &filepath) { //============================== xmmGmmTool ==================================// -// std::vector<double> xmmGmmTool::run(const std::vector<double>& inputVector) { std::vector<double> rapidXmmGmm::run(const std::vector<double>& inputVector) { xmmTool::preProcess(inputVector); return model.results.smoothed_normalized_likelihoods; @@ -151,7 +150,6 @@ std::vector<double> rapidXmmGmm::run(const std::vector<double>& inputVector) { //============================== xmmGmrTool ==================================// -// std::vector<double> xmmGmrTool::run(const std::vector<double>& inputVector) { std::vector<double> rapidXmmGmr::run(const std::vector<double>& inputVector) { xmmTool::preProcess(inputVector); std::vector<float> *res = &model.results.output_values; @@ -161,7 +159,6 @@ std::vector<double> rapidXmmGmr::run(const std::vector<double>& inputVector) { //============================== xmmHmmTool ==================================// -// std::vector<double> xmmHmmTool::run(const std::vector<double>& inputVector) { std::vector<double> rapidXmmHmm::run(const std::vector<double>& inputVector) { xmmTool::preProcess(inputVector); std::vector<double> res; @@ -178,7 +175,6 @@ std::vector<double> rapidXmmHmm::run(const std::vector<double>& inputVector) { //============================== xmmHmrTool ==================================// -// std::vector<double> xmmHmrTool::run(const std::vector<double>& inputVector) { std::vector<double> rapidXmmHmr::run(const std::vector<double>& inputVector) { xmmTool::preProcess(inputVector); std::vector<float> *res = &model.results.output_values; @@ -187,20 +183,25 @@ std::vector<double> rapidXmmHmr::run(const std::vector<double>& inputVector) { } /////////////////////////////////////////////////////////////////////////// -///// generic train method and forward declaration of specialized templates +///// generic train method and forward declaration of specialized templates /////////////////////////////////////////////////////////////////////////// +template class xmmTool<xmm::GMM, xmm::GMM>; +template class xmmTool<xmm::HMM, xmm::HierarchicalHMM>; + +template class xmmStaticTool<xmm::GMM, xmm::GMM>; +template class xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM>; + //I wonder why this can't be defined in machineLearning.cpp? -MZ +// It is needed by the template instantiations below. +// You get an undefined symbols error otherwise. + template <class MachineLearningModule> bool rapidmix::machineLearning<MachineLearningModule>::train(const trainingData &newTrainingData) { return MachineLearningModule::train(newTrainingData); } -// template class rapidmix::machineLearning<xmmGmmTool>; -// template class rapidmix::machineLearning<xmmGmrTool>; -// template class rapidmix::machineLearning<xmmHmmTool>; -// template class rapidmix::machineLearning<xmmHmrTool>; template class rapidmix::machineLearning<rapidXmmGmm>; template class rapidmix::machineLearning<rapidXmmGmr>; template class rapidmix::machineLearning<rapidXmmHmm>; diff --git a/src/machineLearning/rapidXMM/rapidXMM.h b/src/machineLearning/rapidXMM/rapidXMM.h index e87f992dfe79fd285d2ed621108b90fdd8304064..07cab091bf175d41395d97cbcc55631740865ca7 100644 --- a/src/machineLearning/rapidXMM/rapidXMM.h +++ b/src/machineLearning/rapidXMM/rapidXMM.h @@ -1,7 +1,7 @@ /** * @file rapidXMM.h * @author joseph larralde - * + * * @copyright * Copyright (C) 2016 - 2017 by IRCAM - Centre Pompidou, Paris, France. * All rights reserved. @@ -140,7 +140,7 @@ protected: mCfg.gaussians.set(cfg.gaussians); mCfg.relative_regularization.set(cfg.relativeRegularization); mCfg.absolute_regularization.set(cfg.absoluteRegularization); - + xmm::MultiClassRegressionEstimator mcre; switch (cfg.regressionEstimator) { case xmmLikeliestRegression: @@ -224,16 +224,10 @@ public: /** * @brief Static classification using Gaussian Mixture Models */ -// class xmmGmmTool : public xmmStaticTool<xmm::GMM, xmm::GMM> { -// class GMM : public xmmStaticTool<xmm::GMM, xmm::GMM> { class rapidXmmGmm : public xmmStaticTool<xmm::GMM, xmm::GMM> { public: - // xmmGmmTool(xmmToolConfig cfg = xmmToolConfig()) : - // GMM(xmmToolConfig cfg = xmmToolConfig()) : rapidXmmGmm(xmmToolConfig cfg = xmmToolConfig()) : xmmStaticTool<xmm::GMM, xmm::GMM>(cfg, false) {} - // ~xmmGmmTool() {} - // ~GMM() {} ~rapidXmmGmm() {} std::vector<double> run(const std::vector<double>& inputVector); @@ -242,16 +236,10 @@ public: /** * @brief Static regression using Gaussian Mixture Models */ -// class xmmGmrTool : public xmmStaticTool<xmm::GMM, xmm::GMM> { -// class GMR : public xmmStaticTool<xmm::GMM, xmm::GMM> { class rapidXmmGmr : public xmmStaticTool<xmm::GMM, xmm::GMM> { public: - // xmmGmrTool(xmmToolConfig cfg = xmmToolConfig()) : - // GMR(xmmToolConfig cfg = xmmToolConfig()) : rapidXmmGmr(xmmToolConfig cfg = xmmToolConfig()) : xmmStaticTool<xmm::GMM, xmm::GMM>(cfg, true) {} - // ~xmmGmrTool() {} - // ~GMR() {} ~rapidXmmGmr() {} std::vector<double> run(const std::vector<double>& inputVector); @@ -260,16 +248,10 @@ public: /** * @brief Temporal classification using Hierarchical Hidden Markov Models */ -// class xmmHmmTool : public xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM> { -// class HMM : public xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM> { class rapidXmmHmm : public xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM> { public: - // xmmHmmTool(xmmToolConfig cfg = xmmToolConfig()) : - // HMM(xmmToolConfig cfg = xmmToolConfig()) : rapidXmmHmm(xmmToolConfig cfg = xmmToolConfig()) : xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM>(cfg, false) {} - // ~xmmHmmTool() {} - // ~HMM() {} ~rapidXmmHmm() {} std::vector<double> run(const std::vector<double>& inputVector); @@ -278,16 +260,10 @@ public: /** * @brief Temporal regression using Hierarchical Hidden Markov Models */ -// class xmmHmrTool : public xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM> { -// class HMR : public xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM> { class rapidXmmHmr : public xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM> { public: - // xmmHmrTool(xmmToolConfig cfg = xmmToolConfig()) : - // HMR(xmmToolConfig cfg = xmmToolConfig()) : rapidXmmHmr(xmmToolConfig cfg = xmmToolConfig()) : xmmTemporalTool<xmm::HMM, xmm::HierarchicalHMM>(cfg, true) {} - // ~xmmHmrTool() {} - // ~HMR() {} ~rapidXmmHmr() {} std::vector<double> run(const std::vector<double>& inputVector);