Example #1
0
	def test_logProductNormalizationTests(self):
		standardNormal = GaussianDistribution(0, 1)
		lpn = logProductNormalization(standardNormal, standardNormal)
		self.assertAlmostEqual(-1.2655121234846454, lpn, delta=self.__errorTolerance)
		m1s2 = GaussianDistribution(1, 2)
		m3s4 = GaussianDistribution(3, 4)
		lpn2 = logProductNormalization(m1s2, m3s4)
		self.assertAlmostEqual(-2.5168046699816684, lpn2, delta=self.__errorTolerance)
Example #2
0
	def logNormalization(self):
		marginal = self._variables[0].value
		message = self._messages[0].value
		messageFromVariable = marginal/message
		mean = messageFromVariable.mean
		std = messageFromVariable.standardDeviation
		z = cumulativeTo((self._epsilon - mean) / std) - cumulativeTo((-1.0 * self._epsilon - mean) / std)
		return -1.0 * logProductNormalization(messageFromVariable, message) + log(z)
Example #3
0
	def sendMessage(self, message, variable):
		marginal = variable.value
		messageValue = message.value
		logZ = logProductNormalization(marginal, messageValue)
		variable.value = marginal*messageValue
		return logZ
Example #4
0
	def logNormalization(self):
		marginal = self._variables[0].value
		message = self._messages[0].value
		messageFromVariable = marginal/message
		return -1.0*logProductNormalization(messageFromVariable, message) + log(cumulativeTo((messageFromVariable.mean - self._epsilon) / messageFromVariable.standardDeviation))