/// <summary>Computations that depend on the observed value of numberOfIterationsDecreased and WeightPriors and FeatureIndexes and InstanceCount and InstanceFeatureCounts and FeatureValues and Labels and WeightConstraints</summary>
        /// <param name="numberOfIterations">The number of times to iterate each loop</param>
        private void Changed_numberOfIterationsDecreased_WeightPriors_FeatureIndexes_InstanceCount_InstanceFeatureCounts_7(int numberOfIterations)
        {
            if (this.Changed_numberOfIterationsDecreased_WeightPriors_FeatureIndexes_InstanceCount_InstanceFeatureCounts_7_iterationsDone == numberOfIterations)
            {
                return;
            }
            for (int iteration = this.Changed_numberOfIterationsDecreased_WeightPriors_FeatureIndexes_InstanceCount_InstanceFeatureCounts_7_iterationsDone; iteration < numberOfIterations; iteration++)
            {
                // Message to 'Weights_uses' from Replicate factor
                this.Weights_uses_B_toDef = ReplicateOp_Divide.ToDef <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B, this.Weights_uses_B_toDef);
                // Message to 'Weights_uses' from Replicate factor
                this.Weights_uses_F_marginal = ReplicateOp_Divide.Marginal <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B_toDef, this.weightPriors, this.Weights_uses_F_marginal);
                // Message to 'Weights_uses' from Replicate factor
                this.Weights_uses_F[1] = ReplicateOp_Divide.UsesAverageConditional <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B[1], this.Weights_uses_F_marginal, 1, this.Weights_uses_F[1]);
                // Message to 'Weights_FeatureIndexes' from JaggedSubarray factor
                this.Weights_uses_F_1__marginal = JaggedSubarrayOp <double> .Marginal <DistributionStructArray <Gaussian, double>, Gaussian, object, DistributionStructArray <Gaussian, double> >(this.Weights_uses_F[1], this.IndexedWeights_B, this.featureIndexes, this.Weights_uses_F_1__marginal);

                for (int InstanceRange = 0; InstanceRange < this.instanceCount; InstanceRange++)
                {
                    // Message to 'Weights_FeatureIndexes' from JaggedSubarray factor
                    this.Weights_FeatureIndexes_F[InstanceRange] = JaggedSubarrayOp <double> .ItemsAverageConditional <DistributionStructArray <Gaussian, double>, Gaussian, DistributionStructArray <Gaussian, double> >(this.IndexedWeights_B[InstanceRange], this.Weights_uses_F[1], this.Weights_uses_F_1__marginal, this.featureIndexes, InstanceRange, this.Weights_FeatureIndexes_F[InstanceRange]);

                    for (int InstanceFeatureRanges = 0; InstanceFeatureRanges < this.instanceFeatureCounts[InstanceRange]; InstanceFeatureRanges++)
                    {
                        // Message to 'FeatureScores' from Product factor
                        this.FeatureScores_F[InstanceRange][InstanceFeatureRanges] = GaussianProductOp.ProductAverageConditional(this.featureValues[InstanceRange][InstanceFeatureRanges], this.Weights_FeatureIndexes_F[InstanceRange][InstanceFeatureRanges]);
                    }
                    // Message to 'Score' from Sum factor
                    this.Score_F[InstanceRange] = FastSumOp.SumAverageConditional(this.FeatureScores_F[InstanceRange]);
                    // Message to 'NoisyScore' from GaussianFromMeanAndVariance factor
                    this.NoisyScore_F[InstanceRange] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(this.Score_F[InstanceRange], 1.0);
                    // Message to 'NoisyScore_use' from IsPositive factor
                    this.NoisyScore_use_B[InstanceRange] = IsPositiveOp_Proper.XAverageConditional(Bernoulli.PointMass(this.labels[InstanceRange]), this.NoisyScore_F[InstanceRange]);
                    // Message to 'Score' from GaussianFromMeanAndVariance factor
                    this.Score_B[InstanceRange] = GaussianFromMeanAndVarianceOp.MeanAverageConditional(this.NoisyScore_use_B[InstanceRange], 1.0);
                    // Message to 'FeatureScores' from Sum factor
                    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 InstanceFeatureRanges = 0; InstanceFeatureRanges < this.instanceFeatureCounts[InstanceRange]; InstanceFeatureRanges++)
                    {
                        // Message to 'IndexedWeights' from Product factor
                        this.IndexedWeights_B[InstanceRange][InstanceFeatureRanges] = GaussianProductOp.BAverageConditional(this.FeatureScores_B[InstanceRange][InstanceFeatureRanges], this.featureValues[InstanceRange][InstanceFeatureRanges]);
                    }
                    this.Weights_uses_F_1__marginal = JaggedSubarrayOp <double> .MarginalIncrement <DistributionStructArray <Gaussian, double>, Gaussian, DistributionStructArray <Gaussian, double> >(this.Weights_uses_F_1__marginal, this.Weights_FeatureIndexes_F[InstanceRange], this.IndexedWeights_B[InstanceRange], this.featureIndexes, InstanceRange);
                }
                // Message to 'Weights_uses' from JaggedSubarray factor
                this.Weights_uses_B[1] = JaggedSubarrayOp <double> .ArrayAverageConditional <Gaussian, DistributionStructArray <Gaussian, double>, DistributionStructArray <Gaussian, double> >(this.IndexedWeights_B, this.featureIndexes, this.Weights_uses_B[1]);

                this.OnProgressChanged(new ProgressChangedEventArgs(iteration));
            }
            // Message to 'Weights_uses' from Replicate factor
            this.Weights_uses_B_toDef = ReplicateOp_Divide.ToDef <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B, this.Weights_uses_B_toDef);
            // Message to 'Weights_marginal' from Variable factor
            this.Weights_marginal_F = VariableOp.MarginalAverageConditional <DistributionStructArray <Gaussian, double> >(this.Weights_uses_B_toDef, this.weightPriors, this.Weights_marginal_F);
            this.Changed_numberOfIterationsDecreased_WeightPriors_FeatureIndexes_InstanceCount_InstanceFeatureCounts_7_iterationsDone = numberOfIterations;
        }
Exemplo n.º 2
0
        /// <summary>Computations that depend on the observed value of FeatureIndexes and WeightPriors and WeightConstraints and InstanceCount and InstanceFeatureCounts</summary>
        private void Changed_FeatureIndexes_WeightPriors_WeightConstraints_InstanceCount_InstanceFeatureCounts()
        {
            if (this.Changed_FeatureIndexes_WeightPriors_WeightConstraints_InstanceCount_InstanceFeatureCounts_iterationsDone == 1)
            {
                return;
            }
            // Message to 'Weights_FeatureIndexes' from JaggedSubarray factor
            this.Weights_uses_F_1__marginal = JaggedSubarrayOp <double> .Marginal <DistributionStructArray <Gaussian, double>, Gaussian, object, DistributionStructArray <Gaussian, double> >(this.Weights_uses_F[1], this.IndexedWeights_B, this.featureIndexes, this.Weights_uses_F_1__marginal);

            for (int InstanceRange = 0; InstanceRange < this.instanceCount; InstanceRange++)
            {
                // Message to 'Weights_FeatureIndexes' from JaggedSubarray factor
                this.Weights_FeatureIndexes_F[InstanceRange] = JaggedSubarrayOp <double> .ItemsAverageConditional <DistributionStructArray <Gaussian, double>, Gaussian, DistributionStructArray <Gaussian, double> >(this.IndexedWeights_B[InstanceRange], this.Weights_uses_F[1], this.Weights_uses_F_1__marginal, this.featureIndexes, InstanceRange, this.Weights_FeatureIndexes_F[InstanceRange]);
            }
            this.Changed_FeatureIndexes_WeightPriors_WeightConstraints_InstanceCount_InstanceFeatureCounts_iterationsDone             = 1;
            this.Changed_InstanceCount_InstanceFeatureCounts_FeatureValues_FeatureIndexes_WeightPriors_WeightConstrai6_iterationsDone = 0;
        }
        /// <summary>Computations that depend on the observed value of WeightPriors and must reset on changes to numberOfIterationsDecreased and FeatureIndexes and InstanceCount and InstanceFeatureCounts and FeatureValues and Labels and WeightConstraints</summary>
        /// <param name="initialise">If true, reset messages that initialise loops</param>
        private void Changed_WeightPriors_Init_numberOfIterationsDecreased_FeatureIndexes_InstanceCount_InstanceFeatureCo1(bool initialise)
        {
            if ((this.Changed_WeightPriors_Init_numberOfIterationsDecreased_FeatureIndexes_InstanceCount_InstanceFeatureCo1_iterationsDone == 1) && ((!initialise) || this.Changed_WeightPriors_Init_numberOfIterationsDecreased_FeatureIndexes_InstanceCount_InstanceFeatureCo1_isInitialised))
            {
                return;
            }
            for (int _ind = 0; _ind < 2; _ind++)
            {
                this.Weights_uses_B[_ind] = ArrayHelper.MakeUniform <DistributionStructArray <Gaussian, double> >(this.weightPriors);
            }
            // Message to 'Weights_FeatureIndexes' from JaggedSubarray factor
            this.Weights_uses_F_1__marginal = JaggedSubarrayOp <double> .MarginalInit <DistributionStructArray <Gaussian, double> >(this.Weights_uses_F[1]);

            this.Changed_WeightPriors_Init_numberOfIterationsDecreased_FeatureIndexes_InstanceCount_InstanceFeatureCo1_iterationsDone = 1;
            this.Changed_WeightPriors_Init_numberOfIterationsDecreased_FeatureIndexes_InstanceCount_InstanceFeatureCo1_isInitialised  = true;
            this.Changed_WeightConstraints_WeightPriors_Init_numberOfIterationsDecreased_FeatureIndexes_InstanceCount3_iterationsDone = 0;
            this.Changed_numberOfIterationsDecreased_WeightPriors_FeatureIndexes_InstanceCount_InstanceFeatureCounts_7_iterationsDone = 0;
        }
Exemplo n.º 4
0
        /// <summary>Computations that depend on the observed value of WeightPriors</summary>
        private void Changed_WeightPriors()
        {
            if (this.Changed_WeightPriors_iterationsDone == 1)
            {
                return;
            }
            for (int _ind = 0; _ind < 2; _ind++)
            {
                this.Weights_uses_B[_ind] = ArrayHelper.MakeUniform <DistributionStructArray <Gaussian, double> >(this.weightPriors);
                this.Weights_uses_F[_ind] = ArrayHelper.MakeUniform <DistributionStructArray <Gaussian, double> >(this.weightPriors);
            }
            // Message to 'Weights_uses' from Replicate factor
            this.Weights_uses_F_marginal = ReplicateOp_Divide.MarginalInit <DistributionStructArray <Gaussian, double> >(this.weightPriors);
            // Message to 'Weights_uses' from Replicate factor
            this.Weights_uses_B_toDef = ReplicateOp_Divide.ToDefInit <DistributionStructArray <Gaussian, double> >(this.weightPriors);
            // Message to 'Weights_FeatureIndexes' from JaggedSubarray factor
            this.Weights_uses_F_1__marginal = JaggedSubarrayOp <double> .MarginalInit <DistributionStructArray <Gaussian, double> >(this.Weights_uses_F[1]);

            this.Changed_WeightPriors_iterationsDone = 1;
            this.Changed_WeightConstraints_WeightPriors_iterationsDone = 0;
            this.Changed_FeatureIndexes_WeightPriors_WeightConstraints_InstanceCount_InstanceFeatureCounts_iterationsDone = 0;
        }