See also: training_task reference.
The training task provides basic functionality related to training a set of pattern models. It is used as a base class for other tasks, so that you can train the models before you use them for e.g., classification or synthesis.
Here is an example of how training tasks can be used to train a pattern model from examples, either using expectiation maximization or best match (Viterbi) training:
#include <ame/patterns/task/training.hpp> #include <ame/patterns/model/chain_hmm.hpp> #include <ame/observations/training/normal.hpp> #include <boost/assign/std/vector.hpp> #define BOOST_TEST_MAIN #include <boost/test/unit_test.hpp> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/view/repetitive_view.hpp> #include <boost/fusion/view/single_view.hpp> BOOST_AUTO_TEST_CASE( test ) { namespace patterns = ame::patterns; namespace observations = ame::observations; patterns::training_task < // use a chain_hmm model, with a normal observation distribution patterns::model::chain_hmm<observations::normal>, // use the EM algorithm for training patterns::expectation_maximization_training > em_training_task; patterns::training_task < // use a chain_hmm model, with a normal observation distribution patterns::model::chain_hmm<observations::normal>, // use the EM algorithm for training patterns::best_match_training > best_match_training_task; // this will hold our training example std::vector<std::vector<double> > examples(2); using namespace boost::assign; // two examples for pattern 0 examples.front() += 0, 0.1, -0.1, 0.2, 0.2, 0.2, 1.1; examples.back() += 0.1, 1.2; std::vector<std::vector<size_t> > alignments(2); alignments.front() += 0, 0, 0, 0, 1, 1, 1; alignments.back() += 0, 1; // add a new pattern model with 2 states to the em_training_task, // trained from the examples em_training_task.add_pattern_with_examples(2, examples); em_training_task.add_pattern_with_examples_and_alignments(2, examples, alignments); // add a new pattern model with 2 states to the best_match_training_task, // trained from the examples best_match_training_task.add_pattern_with_examples(2, examples); best_match_training_task.add_pattern_with_examples_and_alignments(2, examples, alignments); }
See the classification and synthesis task documentation for more examples of training.