Exemple #1
0
        /// <summary>Computations that depend on the observed value of vVector__88 and vdouble__264</summary>
        private void Changed_vVector__88_vdouble__264()
        {
            if (this.Changed_vVector__88_vdouble__264_iterationsDone == 1)
            {
                return;
            }
            this.vVector__88_marginal  = new PointMass <Vector[]>(this.VVector__88);
            this.vdouble__264_marginal = new DistributionStructArray <Gaussian, double>(5622, delegate(int index88) {
                return(Gaussian.Uniform());
            });
            this.vdouble__264_marginal = Distribution.SetPoint <DistributionStructArray <Gaussian, double>, double[]>(this.vdouble__264_marginal, this.Vdouble__264);
            // The constant 'vVectorGaussian88'
            VectorGaussian vVectorGaussian88 = VectorGaussian.FromNatural(DenseVector.FromArray(new double[3] {
                0.0, 0.0, 0.0
            }), new PositiveDefiniteMatrix(new double[3, 3] {
                { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }
            }));

            this.vVector265_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian88);
            // Message from use of 'vdouble__265'
            DistributionStructArray <Gaussian, double> vdouble__265_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__265_use' Backwards messages.
            vdouble__265_use_B = new DistributionStructArray <Gaussian, double>(5622);
            for (int index88 = 0; index88 < 5622; index88++)
            {
                vdouble__265_use_B[index88] = Gaussian.Uniform();
                // Message to 'vdouble__265_use' from GaussianFromMeanAndVariance factor
                vdouble__265_use_B[index88] = GaussianFromMeanAndVarianceOp.MeanAverageConditional(this.Vdouble__264[index88], 0.1);
            }
            DistributionRefArray <VectorGaussian, Vector> vVector265_rep_B = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector265_rep' Backwards messages.
            vVector265_rep_B = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index88 = 0; index88 < 5622; index88++)
            {
                vVector265_rep_B[index88] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian88);
                // Message to 'vVector265_rep' from InnerProduct factor
                vVector265_rep_B[index88] = InnerProductOp.AAverageConditional(vdouble__265_use_B[index88], this.VVector__88[index88], vVector265_rep_B[index88]);
            }
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector265_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector265_rep' from Replicate factor
            vVector265_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian88);
            // Message to 'vVector265_rep' from Replicate factor
            vVector265_rep_B_toDef = ReplicateOp_Divide.ToDef <VectorGaussian>(vVector265_rep_B, vVector265_rep_B_toDef);
            // Message to 'vVector265_marginal' from Variable factor
            this.vVector265_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector265_rep_B_toDef, vVectorGaussian88, this.vVector265_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__265_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__265' Forwards messages.
            vdouble__265_F = new DistributionStructArray <Gaussian, double>(5622);
            for (int index88 = 0; index88 < 5622; index88++)
            {
                vdouble__265_F[index88] = Gaussian.Uniform();
            }
            DistributionRefArray <VectorGaussian, Vector> vVector265_rep_F = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector265_rep' Forwards messages.
            vVector265_rep_F = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index88 = 0; index88 < 5622; index88++)
            {
                vVector265_rep_F[index88] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian88);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector265_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector265_rep' from Replicate factor
            vVector265_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian88);
            // Message to 'vVector265_rep' from Replicate factor
            vVector265_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector265_rep_B_toDef, vVectorGaussian88, vVector265_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector265_rep_F_index88__AMean'
            Vector[] vVector265_rep_F_index88__AMean = new Vector[5622];
            for (int index88 = 0; index88 < 5622; index88++)
            {
                // Message to 'vdouble__265' from InnerProduct factor
                vVector265_rep_F_index88__AMean[index88] = InnerProductOp.AMeanInit(vVector265_rep_F[index88]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector265_rep_F_index88__AVariance'
            PositiveDefiniteMatrix[] vVector265_rep_F_index88__AVariance = new PositiveDefiniteMatrix[5622];
            for (int index88 = 0; index88 < 5622; index88++)
            {
                // Message to 'vdouble__265' from InnerProduct factor
                vVector265_rep_F_index88__AVariance[index88] = InnerProductOp.AVarianceInit(vVector265_rep_F[index88]);
                // Message to 'vVector265_rep' from Replicate factor
                vVector265_rep_F[index88] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector265_rep_B[index88], vVector265_rep_F_marginal, index88, vVector265_rep_F[index88]);
            }
            // Create array for 'vdouble__265_marginal' Forwards messages.
            this.vdouble__265_marginal_F = new DistributionStructArray <Gaussian, double>(5622);
            for (int index88 = 0; index88 < 5622; index88++)
            {
                this.vdouble__265_marginal_F[index88] = Gaussian.Uniform();
                // Message to 'vdouble__265' from InnerProduct factor
                vVector265_rep_F_index88__AVariance[index88] = InnerProductOp.AVariance(vVector265_rep_F[index88], vVector265_rep_F_index88__AVariance[index88]);
                // Message to 'vdouble__265' from InnerProduct factor
                vVector265_rep_F_index88__AMean[index88] = InnerProductOp.AMean(vVector265_rep_F[index88], vVector265_rep_F_index88__AVariance[index88], vVector265_rep_F_index88__AMean[index88]);
                // Message to 'vdouble__265' from InnerProduct factor
                vdouble__265_F[index88] = InnerProductOp.InnerProductAverageConditional(vVector265_rep_F_index88__AMean[index88], vVector265_rep_F_index88__AVariance[index88], this.VVector__88[index88]);
                // Message to 'vdouble__265_marginal' from DerivedVariable factor
                this.vdouble__265_marginal_F[index88] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__265_use_B[index88], vdouble__265_F[index88], this.vdouble__265_marginal_F[index88]);
            }
            this.Changed_vVector__88_vdouble__264_iterationsDone = 1;
        }
Exemple #2
0
        /// <summary>Computations that depend on the observed value of vVector__39</summary>
        private void Changed_vVector__39()
        {
            if (this.Changed_vVector__39_iterationsDone == 1)
            {
                return;
            }
            this.vVector__39_marginal = new PointMass <Vector[]>(this.VVector__39);
            // The constant 'vVectorGaussian39'
            VectorGaussian vVectorGaussian39 = VectorGaussian.FromNatural(DenseVector.FromArray(new double[3] {
                1547829870.0, 525077980.0, 200270.0
            }), new PositiveDefiniteMatrix(new double[3, 3] {
                { 4254590363351.0, 1127383488860.0, 433199230.0 }, { 1127383488860.0, 482723521821.0, 146764360.0 }, { 433199230.0, 146764360.0, 56221.0 }
            }));

            this.vVector117_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian39);
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector117_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector117_rep' from Replicate factor
            vVector117_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian39);
            // Message to 'vVector117_marginal' from Variable factor
            this.vVector117_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector117_rep_B_toDef, vVectorGaussian39, this.vVector117_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__117_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__117' Forwards messages.
            vdouble__117_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                vdouble__117_F[index39] = Gaussian.Uniform();
            }
            DistributionStructArray <Gaussian, double> vdouble__118_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__118' Forwards messages.
            vdouble__118_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                vdouble__118_F[index39] = Gaussian.Uniform();
            }
            DistributionRefArray <VectorGaussian, Vector> vVector117_rep_F = default(DistributionRefArray <VectorGaussian, Vector>);
            DistributionRefArray <VectorGaussian, Vector> vVector117_rep_B = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector117_rep' Forwards messages.
            vVector117_rep_F = new DistributionRefArray <VectorGaussian, Vector>(1);
            // Create array for 'vVector117_rep' Backwards messages.
            vVector117_rep_B = new DistributionRefArray <VectorGaussian, Vector>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                vVector117_rep_B[index39] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian39);
                vVector117_rep_F[index39] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian39);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector117_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector117_rep' from Replicate factor
            vVector117_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian39);
            // Message to 'vVector117_rep' from Replicate factor
            vVector117_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector117_rep_B_toDef, vVectorGaussian39, vVector117_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector117_rep_F_index39__AMean'
            Vector[] vVector117_rep_F_index39__AMean = new Vector[1];
            for (int index39 = 0; index39 < 1; index39++)
            {
                // Message to 'vdouble__118' from InnerProduct factor
                vVector117_rep_F_index39__AMean[index39] = InnerProductOp.AMeanInit(vVector117_rep_F[index39]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector117_rep_F_index39__AVariance'
            PositiveDefiniteMatrix[] vVector117_rep_F_index39__AVariance = new PositiveDefiniteMatrix[1];
            for (int index39 = 0; index39 < 1; index39++)
            {
                // Message to 'vdouble__118' from InnerProduct factor
                vVector117_rep_F_index39__AVariance[index39] = InnerProductOp.AVarianceInit(vVector117_rep_F[index39]);
                // Message to 'vVector117_rep' from Replicate factor
                vVector117_rep_F[index39] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector117_rep_B[index39], vVector117_rep_F_marginal, index39, vVector117_rep_F[index39]);
            }
            // Create array for 'vdouble__118_marginal' Forwards messages.
            this.vdouble__118_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                this.vdouble__118_marginal_F[index39] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__118'
            DistributionStructArray <Gaussian, double> vdouble__118_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__118_use' Backwards messages.
            vdouble__118_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                vdouble__118_use_B[index39] = Gaussian.Uniform();
                // Message to 'vdouble__118' from InnerProduct factor
                vVector117_rep_F_index39__AVariance[index39] = InnerProductOp.AVariance(vVector117_rep_F[index39], vVector117_rep_F_index39__AVariance[index39]);
                // Message to 'vdouble__118' from InnerProduct factor
                vVector117_rep_F_index39__AMean[index39] = InnerProductOp.AMean(vVector117_rep_F[index39], vVector117_rep_F_index39__AVariance[index39], vVector117_rep_F_index39__AMean[index39]);
                // Message to 'vdouble__118' from InnerProduct factor
                vdouble__118_F[index39] = InnerProductOp.InnerProductAverageConditional(vVector117_rep_F_index39__AMean[index39], vVector117_rep_F_index39__AVariance[index39], this.VVector__39[index39]);
                // Message to 'vdouble__118_marginal' from DerivedVariable factor
                this.vdouble__118_marginal_F[index39] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__118_use_B[index39], vdouble__118_F[index39], this.vdouble__118_marginal_F[index39]);
            }
            // Create array for 'vdouble__117_marginal' Forwards messages.
            this.vdouble__117_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                this.vdouble__117_marginal_F[index39] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__117'
            DistributionStructArray <Gaussian, double> vdouble__117_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__117_use' Backwards messages.
            vdouble__117_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index39 = 0; index39 < 1; index39++)
            {
                vdouble__117_use_B[index39] = Gaussian.Uniform();
                // Message to 'vdouble__117' from GaussianFromMeanAndVariance factor
                vdouble__117_F[index39] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(vdouble__118_F[index39], 0.1);
                // Message to 'vdouble__117_marginal' from Variable factor
                this.vdouble__117_marginal_F[index39] = VariableOp.MarginalAverageConditional <Gaussian>(vdouble__117_use_B[index39], vdouble__117_F[index39], this.vdouble__117_marginal_F[index39]);
            }
            this.Changed_vVector__39_iterationsDone = 1;
        }
Exemple #3
0
 /// <summary>Computations that depend on the observed value of FeatureCount and FeatureValues and InstanceCount and Labels and numberOfIterations and WeightConstraints and WeightPriors</summary>
 /// <param name="numberOfIterations">The number of times to iterate each loop</param>
 private void Changed_FeatureCount_FeatureValues_InstanceCount_Labels_numberOfIterations_WeightConstraints_WeightP8(int numberOfIterations)
 {
     if (this.Changed_FeatureCount_FeatureValues_InstanceCount_Labels_numberOfIterations_WeightConstraints_WeightP8_isDone)
     {
         return;
     }
     for (int iteration = this.numberOfIterationsDone; iteration < numberOfIterations; iteration++)
     {
         for (int FeatureRange = 0; FeatureRange < this.featureCount; FeatureRange++)
         {
             this.Weights_depth1_rep_F_marginal[FeatureRange] = ReplicateOp_Divide.Marginal <Gaussian>(this.Weights_depth1_rep_B_toDef[FeatureRange], this.Weights_uses_F[1][FeatureRange], this.Weights_depth1_rep_F_marginal[FeatureRange]);
         }
         for (int InstanceRange = 0; InstanceRange < this.instanceCount; InstanceRange++)
         {
             for (int FeatureRange = 0; FeatureRange < this.featureCount; FeatureRange++)
             {
                 this.Weights_depth1_rep_F[FeatureRange][InstanceRange] = ReplicateOp_Divide.UsesAverageConditional <Gaussian>(this.Weights_depth1_rep_B[FeatureRange][InstanceRange], this.Weights_depth1_rep_F_marginal[FeatureRange], InstanceRange, this.Weights_depth1_rep_F[FeatureRange][InstanceRange]);
                 this.FeatureScores_F[InstanceRange][FeatureRange]      = GaussianProductOpBase.ProductAverageConditional(this.featureValues[InstanceRange][FeatureRange], this.Weights_depth1_rep_F[FeatureRange][InstanceRange]);
             }
             this.Score_F[InstanceRange]          = FastSumOp.SumAverageConditional(this.FeatureScores_F[InstanceRange]);
             this.NoisyScore_F[InstanceRange]     = GaussianFromMeanAndVarianceOp.SampleAverageConditional(this.Score_F[InstanceRange], 1.0);
             this.NoisyScore_use_B[InstanceRange] = IsPositiveOp_Proper.XAverageConditional(Bernoulli.PointMass(this.labels[InstanceRange]), this.NoisyScore_F[InstanceRange]);
             this.Score_B[InstanceRange]          = GaussianFromMeanAndVarianceOp.MeanAverageConditional(this.NoisyScore_use_B[InstanceRange], 1.0);
             this.FeatureScores_B[InstanceRange]  = FastSumOp.ArrayAverageConditional <DistributionStructArray <Gaussian, double> >(this.Score_B[InstanceRange], this.Score_F[InstanceRange], this.FeatureScores_F[InstanceRange], this.FeatureScores_B[InstanceRange]);
             for (int FeatureRange = 0; FeatureRange < this.featureCount; FeatureRange++)
             {
                 this.Weights_depth1_rep_B[FeatureRange][InstanceRange] = GaussianProductOpBase.BAverageConditional(this.FeatureScores_B[InstanceRange][FeatureRange], this.featureValues[InstanceRange][FeatureRange]);
                 this.Weights_depth1_rep_F_marginal[FeatureRange]       = ReplicateOp_Divide.MarginalIncrement <Gaussian>(this.Weights_depth1_rep_F_marginal[FeatureRange], this.Weights_depth1_rep_F[FeatureRange][InstanceRange], this.Weights_depth1_rep_B[FeatureRange][InstanceRange]);
             }
         }
         for (int FeatureRange = 0; FeatureRange < this.featureCount; FeatureRange++)
         {
             this.Weights_depth1_rep_B_toDef[FeatureRange] = ReplicateOp_Divide.ToDef <Gaussian>(this.Weights_depth1_rep_B[FeatureRange], this.Weights_depth1_rep_B_toDef[FeatureRange]);
         }
         this.OnProgressChanged(new ProgressChangedEventArgs(iteration));
     }
     for (int _iv = 0; _iv < this.featureCount; _iv++)
     {
         this.Weights_uses_B[1][_iv] = ArrayHelper.SetTo <Gaussian>(this.Weights_uses_B[1][_iv], this.Weights_depth1_rep_B_toDef[_iv]);
     }
     this.Weights_uses_F[0] = ReplicateOp_NoDivide.UsesAverageConditional <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B, this.weightPriors, 0, this.Weights_uses_F[0]);
     this.ModelSelector_selector_cases_0_uses_B[6] = Bernoulli.FromLogOdds(ReplicateOp.LogEvidenceRatio <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B, this.weightPriors, this.Weights_uses_F));
     this.ModelSelector_selector_cases_0_uses_B[7] = Bernoulli.FromLogOdds(ConstrainEqualRandomOp <double[]> .LogEvidenceRatio <DistributionStructArray <Gaussian, double> >(this.Weights_uses_F[0], this.weightConstraints));
     for (int FeatureRange = 0; FeatureRange < this.featureCount; FeatureRange++)
     {
         this.ModelSelector_selector_cases_0_rep3_uses_B[FeatureRange][1] = Bernoulli.FromLogOdds(ReplicateOp.LogEvidenceRatio <Gaussian>(this.Weights_depth1_rep_B[FeatureRange], this.Weights_uses_F[1][FeatureRange], this.Weights_depth1_rep_F[FeatureRange]));
         this.ModelSelector_selector_cases_0_rep3_B[FeatureRange]         = ReplicateOp_NoDivide.DefAverageConditional <Bernoulli>(this.ModelSelector_selector_cases_0_rep3_uses_B[FeatureRange], this.ModelSelector_selector_cases_0_rep3_B[FeatureRange]);
     }
     this.ModelSelector_selector_cases_0_uses_B[12] = ReplicateOp_NoDivide.DefAverageConditional <Bernoulli>(this.ModelSelector_selector_cases_0_rep3_B, this.ModelSelector_selector_cases_0_uses_B[12]);
     for (int InstanceRange = 0; InstanceRange < this.instanceCount; InstanceRange++)
     {
         this.ModelSelector_selector_cases_0_rep8_B[InstanceRange] = Bernoulli.FromLogOdds(IsPositiveOp.LogEvidenceRatio(this.labels[InstanceRange], this.NoisyScore_F[InstanceRange]));
     }
     this.ModelSelector_selector_cases_0_uses_B[17] = ReplicateOp_NoDivide.DefAverageConditional <Bernoulli>(this.ModelSelector_selector_cases_0_rep8_B, this.ModelSelector_selector_cases_0_uses_B[17]);
     this.ModelSelector_selector_cases_0_B          = ReplicateOp_NoDivide.DefAverageConditional <Bernoulli>(this.ModelSelector_selector_cases_0_uses_B, this.ModelSelector_selector_cases_0_B);
     this.ModelSelector_selector_cases_B[0]         = ArrayHelper.SetTo <Bernoulli>(this.ModelSelector_selector_cases_B[0], this.ModelSelector_selector_cases_0_B);
     this.ModelSelector_selector_B = CasesOp.BAverageConditional(this.ModelSelector_selector_cases_B);
     this.ModelSelector_marginal_F = VariableOp.MarginalAverageConditional <Bernoulli>(this.ModelSelector_selector_B, this.vBernoulli0, this.ModelSelector_marginal_F);
     this.Weights_use_B            = ReplicateOp_NoDivide.DefAverageConditional <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B, this.Weights_use_B);
     this.Weights_marginal_F       = VariableOp.MarginalAverageConditional <DistributionStructArray <Gaussian, double> >(this.Weights_use_B, this.weightPriors, this.Weights_marginal_F);
     this.Changed_FeatureCount_FeatureValues_InstanceCount_Labels_numberOfIterations_WeightConstraints_WeightP8_isDone = true;
 }