rename from exponentiateLogProbabilities to probabilitiesFromLogValues
parent
e81272b078
commit
3dab868ef0
|
@ -235,19 +235,18 @@ continuousElimination(const HybridGaussianFactorGraph &factors,
|
||||||
|
|
||||||
/* ************************************************************************ */
|
/* ************************************************************************ */
|
||||||
/**
|
/**
|
||||||
* @brief Exponential log-probabilities after performing
|
* @brief Exponentiate log-values, not necessarily normalized, normalize, and
|
||||||
* the necessary normalizations.
|
* return as AlgebraicDecisionTree<Key>.
|
||||||
*
|
*
|
||||||
* @param logProbabilities DecisionTree of log-probabilities.
|
* @param logValues DecisionTree of (unnormalized) log values.
|
||||||
* @return AlgebraicDecisionTree<Key>
|
* @return AlgebraicDecisionTree<Key>
|
||||||
*/
|
*/
|
||||||
static AlgebraicDecisionTree<Key> exponentiateLogProbabilities(
|
static AlgebraicDecisionTree<Key> probabilitiesFromLogValues(
|
||||||
const AlgebraicDecisionTree<Key> &logProbabilities) {
|
const AlgebraicDecisionTree<Key> &logValues) {
|
||||||
// Perform normalization
|
// Perform normalization
|
||||||
double max_log = logProbabilities.max();
|
double max_log = logValues.max();
|
||||||
AlgebraicDecisionTree<Key> probabilities = DecisionTree<Key, double>(
|
AlgebraicDecisionTree<Key> probabilities = DecisionTree<Key, double>(
|
||||||
logProbabilities,
|
logValues, [&max_log](const double x) { return exp(x - max_log); });
|
||||||
[&max_log](const double x) { return exp(x - max_log); });
|
|
||||||
probabilities = probabilities.normalize(probabilities.sum());
|
probabilities = probabilities.normalize(probabilities.sum());
|
||||||
|
|
||||||
return probabilities;
|
return probabilities;
|
||||||
|
@ -274,7 +273,7 @@ discreteElimination(const HybridGaussianFactorGraph &factors,
|
||||||
DecisionTree<Key, double>(gmf->factors(), logProbability);
|
DecisionTree<Key, double>(gmf->factors(), logProbability);
|
||||||
|
|
||||||
AlgebraicDecisionTree<Key> probabilities =
|
AlgebraicDecisionTree<Key> probabilities =
|
||||||
exponentiateLogProbabilities(logProbabilities);
|
probabilitiesFromLogValues(logProbabilities);
|
||||||
dfg.emplace_shared<DecisionTreeFactor>(gmf->discreteKeys(),
|
dfg.emplace_shared<DecisionTreeFactor>(gmf->discreteKeys(),
|
||||||
probabilities);
|
probabilities);
|
||||||
|
|
||||||
|
@ -340,7 +339,7 @@ static std::shared_ptr<Factor> createDiscreteFactor(
|
||||||
AlgebraicDecisionTree<Key> logProbabilities(
|
AlgebraicDecisionTree<Key> logProbabilities(
|
||||||
DecisionTree<Key, double>(eliminationResults, logProbability));
|
DecisionTree<Key, double>(eliminationResults, logProbability));
|
||||||
AlgebraicDecisionTree<Key> probabilities =
|
AlgebraicDecisionTree<Key> probabilities =
|
||||||
exponentiateLogProbabilities(logProbabilities);
|
probabilitiesFromLogValues(logProbabilities);
|
||||||
|
|
||||||
return std::make_shared<DecisionTreeFactor>(discreteSeparator, probabilities);
|
return std::make_shared<DecisionTreeFactor>(discreteSeparator, probabilities);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue