本文整理汇总了C#中Bernoulli.GetLogAverageOf方法的典型用法代码示例。如果您正苦于以下问题:C# Bernoulli.GetLogAverageOf方法的具体用法?C# Bernoulli.GetLogAverageOf怎么用?C# Bernoulli.GetLogAverageOf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bernoulli
的用法示例。
在下文中一共展示了Bernoulli.GetLogAverageOf方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LogAverageFactor
/// <summary>
/// Evidence message for EP
/// </summary>
/// <param name="isPositive">Incoming message from 'isPositive'.</param>
/// <param name="x">Incoming message from 'x'.</param>
/// <returns>Logarithm of the factor's average value across the given argument distributions</returns>
/// <remarks><para>
/// The formula for the result is <c>log(sum_(isPositive,x) p(isPositive,x) factor(isPositive,x))</c>.
/// </para></remarks>
public static double LogAverageFactor(Bernoulli isPositive, Gaussian x)
{
if (isPositive.IsPointMass && x.Precision == 0) {
double tau = x.MeanTimesPrecision;
if (isPositive.Point && tau < 0) {
// int I(x>0) exp(tau*x) dx = -1/tau
return -Math.Log(-tau);
}
if (!isPositive.Point && tau > 0) {
// int I(x<0) exp(tau*x) dx = 1/tau
return -Math.Log(tau);
}
}
Bernoulli to_isPositive = IsPositiveAverageConditional(x);
return isPositive.GetLogAverageOf(to_isPositive);
}
示例2: LogAverageFactor
/// <summary>
/// Evidence message for EP
/// </summary>
/// <param name="isPositive">Incoming message from 'isPositive'.</param>
/// <param name="x">Incoming message from 'x'.</param>
/// <returns>Logarithm of the factor's average value across the given argument distributions</returns>
/// <remarks><para>
/// The formula for the result is <c>log(sum_(isPositive,x) p(isPositive,x) factor(isPositive,x))</c>.
/// </para></remarks>
public static double LogAverageFactor(Bernoulli isPositive, Gaussian x)
{
Bernoulli to_isPositive = IsPositiveAverageConditional(x);
return isPositive.GetLogAverageOf(to_isPositive);
#if false
// Z = p(b=T) p(x > 0) + p(b=F) p(x <= 0)
// = p(b=F) + (p(b=T) - p(b=F)) p(x > 0)
if (x.IsPointMass) {
return Factor.IsPositive(x.Point) ? isPositive.GetLogProbTrue() : isPositive.GetLogProbFalse();
} else if(x.IsUniform()) {
return Bernoulli.LogProbEqual(isPositive.LogOdds,0.0);
} else {
// m/sqrt(v) = (m/v)/sqrt(1/v)
double z = x.MeanTimesPrecision / Math.Sqrt(x.Precision);
if (isPositive.IsPointMass) {
return isPositive.Point ? MMath.NormalCdfLn(z) : MMath.NormalCdfLn(-z);
} else {
return MMath.LogSumExp(isPositive.GetLogProbTrue() + MMath.NormalCdfLn(z), isPositive.GetLogProbFalse() + MMath.NormalCdfLn(-z));
}
}
#endif
}
示例3: LogAverageFactor
/// <summary>
/// Evidence message for EP
/// </summary>
/// <param name="sample">Incoming message from 'sample'.</param>
/// <param name="to_sample">Outgoing message to 'sample'.</param>
/// <returns>Logarithm of the factor's average value across the given argument distributions</returns>
/// <remarks><para>
/// The formula for the result is <c>log(sum_(sample) p(sample) factor(sample,probTrue))</c>.
/// </para></remarks>
public static double LogAverageFactor(Bernoulli sample, [Fresh] Bernoulli to_sample)
{
return sample.GetLogAverageOf(to_sample);
}
示例4: LogAverageFactor
/// <summary>
/// Evidence message for EP
/// </summary>
/// <param name="areEqual">Constant value for 'areEqual'.</param>
/// <param name="A">Incoming message from 'a'.</param>
/// <param name="B">Constant value for 'b'.</param>
/// <param name="to_A">Outgoing message to 'a'.</param>
/// <returns>Logarithm of the factor's average value across the given argument distributions</returns>
/// <remarks><para>
/// The formula for the result is <c>log(sum_(a) p(a) factor(areEqual,a,b))</c>.
/// </para></remarks>
public static double LogAverageFactor(bool areEqual, Bernoulli A, bool B, [Fresh] Bernoulli to_A)
{
//Bernoulli toA = AAverageConditional(areEqual, B);
return A.GetLogAverageOf(to_A);
}
示例5: LogEvidenceRatio
public static double LogEvidenceRatio(
Bernoulli label, Bernoulli to_label, Vector point, GaussianGamma shapeParamsX, GaussianGamma shapeParamsY)
{
return LogAverageFactor(label, point, shapeParamsX, shapeParamsY) - label.GetLogAverageOf(to_label);
}