#include <LossFunctions.h>
Public Types | |
enum | ReweightScheme { Scalar, Block } |
typedef std::shared_ptr< Base > | shared_ptr |
Public Member Functions | |
Base (const ReweightScheme reweight=Block) | |
virtual bool | equals (const Base &expected, double tol=1e-8) const =0 |
virtual double | loss (double distance) const |
virtual void | print (const std::string &s) const =0 |
void | reweight (Matrix &A, Vector &error) const |
void | reweight (Matrix &A1, Matrix &A2, Matrix &A3, Vector &error) const |
void | reweight (Matrix &A1, Matrix &A2, Vector &error) const |
void | reweight (std::vector< Matrix > &A, Vector &error) const |
void | reweight (Vector &error) const |
ReweightScheme | reweightScheme () const |
Returns the reweight scheme, as explained in ReweightScheme. More... | |
Vector | sqrtWeight (const Vector &error) const |
double | sqrtWeight (double distance) const |
Vector | weight (const Vector &error) const |
virtual double | weight (double distance) const =0 |
virtual | ~Base () |
Protected Attributes | |
ReweightScheme | reweight_ |
Strategy for reweighting. More... | |
Pure virtual class for all robust error function classes.
It provides the machinery for block vs scalar reweighting strategies, in addition to defining the interface of derived classes.
Definition at line 66 of file LossFunctions.h.
typedef std::shared_ptr<Base> gtsam::noiseModel::mEstimator::Base::shared_ptr |
Definition at line 71 of file LossFunctions.h.
the rows can be weighted independently according to the error or uniformly with the norm of the right hand side
Enumerator | |
---|---|
Scalar | |
Block |
Definition at line 70 of file LossFunctions.h.
|
inline |
Definition at line 78 of file LossFunctions.h.
|
inlinevirtual |
Definition at line 79 of file LossFunctions.h.
|
pure virtual |
Implemented in gtsam::noiseModel::mEstimator::Custom, gtsam::noiseModel::mEstimator::AsymmetricCauchy, gtsam::noiseModel::mEstimator::AsymmetricTukey, gtsam::noiseModel::mEstimator::L2WithDeadZone, gtsam::noiseModel::mEstimator::DCS, gtsam::noiseModel::mEstimator::GemanMcClure, gtsam::noiseModel::mEstimator::Welsch, gtsam::noiseModel::mEstimator::Tukey, gtsam::noiseModel::mEstimator::Cauchy, gtsam::noiseModel::mEstimator::Huber, gtsam::noiseModel::mEstimator::Fair, and gtsam::noiseModel::mEstimator::Null.
|
inlinevirtual |
This method is responsible for returning the total penalty for a given amount of error. For example, this method is responsible for implementing the quadratic function for an L2 penalty, the absolute value function for an L1 penalty, etc.
TODO(mikebosse): When the loss function has as input the norm of the error vector, then it prevents implementations of asymmeric loss functions. It would be better for this function to accept the vector and internally call the norm if necessary.
This returns in mEstimator
Reimplemented in gtsam::noiseModel::mEstimator::Custom, gtsam::noiseModel::mEstimator::AsymmetricCauchy, gtsam::noiseModel::mEstimator::AsymmetricTukey, gtsam::noiseModel::mEstimator::L2WithDeadZone, gtsam::noiseModel::mEstimator::DCS, gtsam::noiseModel::mEstimator::GemanMcClure, gtsam::noiseModel::mEstimator::Welsch, gtsam::noiseModel::mEstimator::Tukey, gtsam::noiseModel::mEstimator::Cauchy, gtsam::noiseModel::mEstimator::Huber, gtsam::noiseModel::mEstimator::Fair, and gtsam::noiseModel::mEstimator::Null.
Definition at line 97 of file LossFunctions.h.
|
pure virtual |
Implemented in gtsam::noiseModel::mEstimator::Custom, gtsam::noiseModel::mEstimator::AsymmetricCauchy, gtsam::noiseModel::mEstimator::AsymmetricTukey, gtsam::noiseModel::mEstimator::L2WithDeadZone, gtsam::noiseModel::mEstimator::DCS, gtsam::noiseModel::mEstimator::GemanMcClure, gtsam::noiseModel::mEstimator::Welsch, gtsam::noiseModel::mEstimator::Tukey, gtsam::noiseModel::mEstimator::Cauchy, gtsam::noiseModel::mEstimator::Huber, gtsam::noiseModel::mEstimator::Fair, and gtsam::noiseModel::mEstimator::Null.
Definition at line 79 of file LossFunctions.cpp.
Definition at line 109 of file LossFunctions.cpp.
Definition at line 93 of file LossFunctions.cpp.
Definition at line 61 of file LossFunctions.cpp.
void Base::reweight | ( | Vector & | error | ) | const |
reweight block matrices and a vector according to their weight implementation
Definition at line 51 of file LossFunctions.cpp.
|
inline |
Returns the reweight scheme, as explained in ReweightScheme.
Definition at line 82 of file LossFunctions.h.
square root version of the weight function
Definition at line 44 of file LossFunctions.cpp.
|
inline |
Definition at line 114 of file LossFunctions.h.
produce a weight vector according to an error vector and the implemented robust function
Definition at line 36 of file LossFunctions.cpp.
|
pure virtual |
This method is responsible for returning the weight function for a given amount of error. The weight function is related to the analytic derivative of the loss function. See https://members.loria.fr/MOBerger/Enseignement/Master2/Documents/ZhangIVC-97-01.pdf for details. This method is required when optimizing cost functions with robust penalties using iteratively re-weighted least squares.
This returns w(x) in mEstimator
Implemented in gtsam::noiseModel::mEstimator::Null, gtsam::noiseModel::mEstimator::Custom, gtsam::noiseModel::mEstimator::AsymmetricCauchy, gtsam::noiseModel::mEstimator::AsymmetricTukey, gtsam::noiseModel::mEstimator::L2WithDeadZone, gtsam::noiseModel::mEstimator::DCS, gtsam::noiseModel::mEstimator::GemanMcClure, gtsam::noiseModel::mEstimator::Welsch, gtsam::noiseModel::mEstimator::Tukey, gtsam::noiseModel::mEstimator::Cauchy, gtsam::noiseModel::mEstimator::Huber, and gtsam::noiseModel::mEstimator::Fair.
|
protected |