def testLogProductNormalization(self): standard_normal = Gaussian(0, 1) lpn = Gaussian.log_product_normalization(standard_normal, standard_normal) answer = -1.2655121234846454 self.assertAlmostEqual(answer, lpn, None, "testLogProductNormalization lpn expected %.15f, got %.15f" % (answer, lpn), GaussianDistributionTest.ERROR_TOLERANCE) m1s2 = Gaussian(1.0, 2.0) m3s4 = Gaussian(3.0, 4.0) lpn2 = Gaussian.log_product_normalization(m1s2, m3s4) answer = -2.5168046699816684 self.assertAlmostEqual(answer, lpn2, None, "testLogProductNormalization lpn2 expected %.15f, got %.15f" % (answer, lpn2), GaussianDistributionTest.ERROR_TOLERANCE)
def log_normalization(self): marginal = self.variables[0].value message = self.messages[0].value message_from_variable = marginal / message return (-Gaussian.log_product_normalization(message_from_variable, message) + log(Gaussian.cumulative_to((message_from_variable.mean - self.epsilon) / message_from_variable.stdev)))
def testLogProductNormalization(self): standard_normal = Gaussian(0, 1) lpn = Gaussian.log_product_normalization(standard_normal, standard_normal) answer = -1.2655121234846454 self.assertAlmostEqual( answer, lpn, None, "testLogProductNormalization lpn expected %.15f, got %.15f" % (answer, lpn), GaussianDistributionTest.ERROR_TOLERANCE) m1s2 = Gaussian(1.0, 2.0) m3s4 = Gaussian(3.0, 4.0) lpn2 = Gaussian.log_product_normalization(m1s2, m3s4) answer = -2.5168046699816684 self.assertAlmostEqual( answer, lpn2, None, "testLogProductNormalization lpn2 expected %.15f, got %.15f" % (answer, lpn2), GaussianDistributionTest.ERROR_TOLERANCE)
def log_normalization(self): marginal = self.variables[0].value message = self.messages[0].value message_from_variable = marginal / message mean = message_from_variable.mean std = message_from_variable.stdev z = (Gaussian.cumulative_to((self.epsilon - mean) / std) - Gaussian.cumulative_to((-self.epsilon - mean) / std)) return -Gaussian.log_product_normalization(message_from_variable, message) + log(z)
def log_normalization(self): marginal = self.variables[0].value message = self.messages[0].value message_from_variable = marginal / message return ( -Gaussian.log_product_normalization(message_from_variable, message) + log( Gaussian.cumulative_to( (message_from_variable.mean - self.epsilon) / message_from_variable.stdev)))
def log_normalization(self): marginal = self.variables[0].value message = self.messages[0].value message_from_variable = marginal / message mean = message_from_variable.mean std = message_from_variable.stdev z = (Gaussian.cumulative_to( (self.epsilon - mean) / std) - Gaussian.cumulative_to( (-self.epsilon - mean) / std)) return -Gaussian.log_product_normalization(message_from_variable, message) + log(z)
def send_message_variable(self, message, variable): marginal = variable.value message_value = message.value log_z = Gaussian.log_product_normalization(marginal, message_value) variable.value = marginal * message_value return log_z
def send_message_variable(self, message, variable): marginal = variable.value message_value = message.value log_z = Gaussian.log_product_normalization(marginal, message_value) variable.value = marginal * message_value return log_z