-
For non-leaf transforms, add a separate train method that takes QList<TemplateList> as arguments, where the separate list items correspond to the separate calls to project that would be made by parent transforms during enrollment. This is basically to deal with the effects of distribute on untrainable meta transforms such as flatten, we have to maintain a consistent grouping with project, otherwise the intermediate projection results used during training won't be consistent with what they would be during enrollment.
-
Conflicts: openbr/plugins/algorithms.cpp
-
resolved conflicts: app/br/br.cpp openbr/core/bee.cpp openbr/core/classify.cpp openbr/core/cluster.cpp openbr/core/eval.h openbr/openbr.cpp openbr/openbr.h openbr/plugins/algorithms.cpp openbr/plugins/independent.cpp openbr/plugins/output.cpp openbr/plugins/svm.cpp
-
Remove variables related to subsampling training data from Transform, move them to a new transform called DownsampleTraining, and perform subsampling in that transform, rather than as part of IndependentTransform (which depended on the subsampling variables in Transform). The prior approach was incompatible with using explicit class variable names, rather than assuming a fixed label variable. This is because the actual downsampling was carried out as part of IndependentTransform, which is not a visible part of the algorithm grammar. Removing this logic from Independent/Transform is generally desirable if only to avoid cluttering Transform with member variables that are only used some of the time, and used in a (fairly) restrictive way. The current approach of makring DownsampleTraining as an indepent transform is still limited since the downsample logic (still) cannot be applied without the split used in Independent, and also DownsampleTraining can only be implemented as a wrapper for another transform (because the argument to train is const, and performing the donwsample logic in project would also impact the testing case (since we have no way to exclude a transform used in training from use in testing, for a fixed algorithm)).
-
Move implmeentation of getEvents to the .cpp file, make getChildren const and public.
-
Look for properties with type Transform * or QList<Transform *> and for getEvent, follow the tree using those, rather than having separate methods for different transforms with children.
-
These names mirroring File functionality. Fixed SVMDistance dropped unnecessary second relabel in LDATransform::train
-
Remove global label/subject lookup table Consistently use "Subject" rather than "Label", subject is assumed to be convertable to QString. When desirable, map discrete subject values to ints. For classifiers such as svm that require numeric labels, generate a string->int mapping for the training data, and store it (local to the transform). Utility functions for collecting all values of a given property (on a template list), and mapping discrete property values to 0-based integers Some outstanding issues include use of label/subject in matrix output
-
Remove subject/label methods from the API, replace some methods with general methods taking a property name as an argument. This breaks quite a few things