rename sigmoid to prob_m_z

release/4.3a0
Varun Agrawal 2024-08-29 19:05:38 -04:00
parent 1673c47ea0
commit 1236e058a1
1 changed files with 17 additions and 15 deletions

View File

@ -205,17 +205,20 @@ namespace test_gmm {
/**
* Function to compute P(m=1|z). For P(m=0|z), swap mus and sigmas.
* If sigma0 == sigma1, it simplifies to a sigmoid function.
*
* Follows equation 7.108 since it is more generic.
*/
double sigmoid(double mu0, double mu1, double sigma0, double sigma1, double z) {
double prob_m_z(double mu0, double mu1, double sigma0, double sigma1,
double z) {
double x1 = ((z - mu0) / sigma0), x2 = ((z - mu1) / sigma1);
double d = sigma0 / sigma1;
double e = d * std::exp(-0.5 * (x1 * x1 - x2 * x2));
return 1 / (1 + e);
};
HybridBayesNet GetGaussianMixtureModel(double mu0, double mu1, double sigma0,
double sigma1) {
static HybridBayesNet GetGaussianMixtureModel(double mu0, double mu1,
double sigma0, double sigma1) {
DiscreteKey m(M(0), 2);
Key z = Z(0);
@ -269,7 +272,7 @@ TEST(GaussianMixtureFactor, GaussianMixtureModel) {
HybridBayesNet::shared_ptr bn = gfg.eliminateSequential();
EXPECT_DOUBLES_EQUAL(
sigmoid(mu0, mu1, sigma, sigma, midway),
prob_m_z(mu0, mu1, sigma, sigma, midway),
bn->at(0)->asDiscrete()->operator()(DiscreteValues{{m.first, 1}}),
1e-8);
@ -288,7 +291,7 @@ TEST(GaussianMixtureFactor, GaussianMixtureModel) {
HybridBayesNet::shared_ptr bn = gfg.eliminateSequential();
EXPECT_DOUBLES_EQUAL(
sigmoid(mu0, mu1, sigma, sigma, midway - lambda),
prob_m_z(mu0, mu1, sigma, sigma, midway - lambda),
bn->at(0)->asDiscrete()->operator()(DiscreteValues{{m.first, 1}}),
1e-8);
}
@ -301,7 +304,7 @@ TEST(GaussianMixtureFactor, GaussianMixtureModel) {
HybridBayesNet::shared_ptr bn = gfg.eliminateSequential();
EXPECT_DOUBLES_EQUAL(
sigmoid(mu0, mu1, sigma, sigma, midway + lambda),
prob_m_z(mu0, mu1, sigma, sigma, midway + lambda),
bn->at(0)->asDiscrete()->operator()(DiscreteValues{{m.first, 1}}),
1e-8);
}
@ -349,11 +352,11 @@ TEST(GaussianMixtureFactor, GaussianMixtureModel2) {
namespace test_two_state_estimation {
/// Create Two State Bayes Network with measurements
HybridBayesNet CreateBayesNet(double mu0, double mu1, double sigma0,
double sigma1,
bool add_second_measurement = false,
double prior_sigma = 1e-3,
double measurement_sigma = 3.0) {
static HybridBayesNet CreateBayesNet(double mu0, double mu1, double sigma0,
double sigma1,
bool add_second_measurement = false,
double prior_sigma = 1e-3,
double measurement_sigma = 3.0) {
DiscreteKey m1(M(1), 2);
Key z0 = Z(0), z1 = Z(1), f01 = F(0);
Key x0 = X(0), x1 = X(1);
@ -401,7 +404,7 @@ HybridBayesNet CreateBayesNet(double mu0, double mu1, double sigma0,
/* ************************************************************************* */
/**
* Test a model P(x0)P(z0|x0)P(f01|x1,x0,m1)P(z1|x1)P(m1).
* Test a model P(x0)P(z0|x0)P(x1|x0,m1)P(z1|x1)P(m1).
*
* P(f01|x1,x0,m1) has different means and same covariance.
*
@ -435,7 +438,6 @@ TEST(GaussianMixtureFactor, TwoStateModel) {
// Since no measurement on x1, we hedge our bets
DiscreteConditional expected(m1, "0.5/0.5");
// regression
EXPECT(assert_equal(expected, *(bn->at(2)->asDiscrete())));
}
@ -457,7 +459,7 @@ TEST(GaussianMixtureFactor, TwoStateModel) {
/* ************************************************************************* */
/**
* Test a model P(x0)P(z0|x0)P(f01|x1,x0,m1)P(z1|x1)P(m1).
* Test a model P(x0)P(z0|x0)P(x1|x0,m1)P(z1|x1)P(m1).
*
* P(f01|x1,x0,m1) has different means and different covariances.
*