Exemplo n.º 1
0
        public void Train()
        {
            // Read all training data and transforming them.
            trainingData = new DataSetReader(Parameter.TrainingFile,
                                             Parameter.InputSize, Parameter.TargetSize);
            double[][] data, target;
            trainingData.ReadAll(out data, out target);
            for (int i = 0; i < trainingData.Count; ++i)
            {
                // transform input level 1
                for (int j = 0; j < Parameter.InputSize; ++j)
                {
                    data[i][j] = inputTransformers1[j].TransformToValue(data[i][j]);
                }
                // transform input level 2
                data[i] = inputTransformers2.TransformToDimension(data[i]);

                // transform target
                target[i] = targetTransform.TransformToDimension(target[i]);
            }

            oldArtAWeights = new List <double[]>();
            bool isWeightsChanged = true, completedLimited = false;

            // Order input and target pattern before.
            if (param.Mode == ProcessModifiedHybridFuzzyARTMapMode.EXTERNAL ||
                param.Mode == ProcessModifiedHybridFuzzyARTMapMode.DUAL)
            {
                mcoa.OrderSequence(data, target);
            }
            do
            {
                SaveOldWeights();

                // Training ordered fuzzy art map
                if (param.Mode == ProcessModifiedHybridFuzzyARTMapMode.EXTERNAL)
                {
                    fartmap.Run(data, target);
                }
                else
                {
                    mfartmap.Run(data, target);
                }

                double mseValue = CalculateMse();
                if (mseValue < Parameter.LimitedMseValue)
                {
                    isWeightsChanged = false;
                }

                performanceCounter.Increment();

                if (param.LimitedEpochs != 0 &&
                    param.LimitedEpochs <= performanceCounter.Count)
                {
                    completedLimited = true;
                }
            }while (!completedLimited && isWeightsChanged);
        }
Exemplo n.º 2
0
        public void Train()
        {
            // Read all training data and transforming them.
            trainingData = new DataSetReader(Parameter.TrainingFile,
                                             Parameter.InputSize, Parameter.TargetSize);
            double[][] data, target;
            trainingData.ReadAll(out data, out target);
            for (int i = 0; i < trainingData.Count; ++i)
            {
                // transform input level 1
                for (int j = 0; j < Parameter.InputSize; ++j)
                {
                    data[i][j] = inputTransformers1[j].TransformToValue(data[i][j]);
                }
                // transform input level 2
                data[i] = inputTransformers2.TransformToDimension(data[i]);

                // transform target
                target[i] = targetTransform.TransformToDimension(target[i]);
            }

            oldArtAWeights = new List <double[]>();
            bool isWeightsChanged = true, completedLimited = false;

            do
            {
                SaveOldWeights();

                // Training ordered fuzzy art map
                network.Run(data, target);

                double mseValue = CalculateMse();
                if (mseValue < Parameter.LimitedMseValue)
                {
                    isWeightsChanged = false;
                }
                performanceCounter.Increment();
                if (parameter.LimitedEpochs != 0 &&
                    parameter.LimitedEpochs <= performanceCounter.Count)
                {
                    completedLimited = true;
                }
            }while (!completedLimited && isWeightsChanged);
        }
        public void Train()
        {
            // Read all training data and transforming them.
            trainingData = new DataSetReader(Parameter.TrainingFile,
                Parameter.InputSize, Parameter.TargetSize);
            double[][] data, target;
            trainingData.ReadAll(out data, out target);
            for (int i = 0; i < trainingData.Count; ++i)
            {
                // transform input level 1
                for (int j = 0; j < Parameter.InputSize; ++j)
                {
                    data[i][j] = inputTransformers1[j].TransformToValue(data[i][j]);
                }
                // transform input level 2
                data[i] = inputTransformers2.TransformToDimension(data[i]);

                // transform target
                target[i] = targetTransform.TransformToDimension(target[i]);
            }

            oldArtAWeights = new List<double[]>();
            bool isWeightsChanged = true, completedLimited = false;

            // Order input and target pattern before.
            if (param.Mode == ProcessModifiedHybridFuzzyARTMapMode.EXTERNAL ||
                    param.Mode == ProcessModifiedHybridFuzzyARTMapMode.DUAL)
            {
                mcoa.OrderSequence(data, target);
            }
            do
            {
                SaveOldWeights();

                // Training ordered fuzzy art map
                if (param.Mode == ProcessModifiedHybridFuzzyARTMapMode.EXTERNAL)
                {
                    fartmap.Run(data, target);
                }
                else
                {
                    mfartmap.Run(data, target);
                }

                double mseValue = CalculateMse();
                if (mseValue < Parameter.LimitedMseValue)
                {
                    isWeightsChanged = false;
                }

                performanceCounter.Increment();

                if (param.LimitedEpochs != 0
                    && param.LimitedEpochs <= performanceCounter.Count)
                {
                    completedLimited = true;
                }
            }
            while (!completedLimited && isWeightsChanged);
        }
        public void Train()
        {
            // Read all training data and transforming them.
            trainingData = new DataSetReader(Parameter.TrainingFile,
                Parameter.InputSize, Parameter.TargetSize);
            double[][] data, target;
            trainingData.ReadAll(out data, out target);
            for (int i = 0; i < trainingData.Count; ++i)
            {
                // transform input level 1
                for (int j = 0; j < Parameter.InputSize; ++j)
                {
                    data[i][j] = inputTransformers1[j].TransformToValue(data[i][j]);
                }
                // transform input level 2
                data[i] = inputTransformers2.TransformToDimension(data[i]);

                // transform target
                target[i] = targetTransform.TransformToDimension(target[i]);
            }

            oldArtAWeights = new List<double[]>();
            bool isWeightsChanged = true, completedLimited = false;
            do
            {
                SaveOldWeights();

                // Training ordered fuzzy art map
                network.Run(data, target);

                double mseValue = CalculateMse();
                if (mseValue < Parameter.LimitedMseValue)
                    isWeightsChanged = false;
                performanceCounter.Increment();
                if (parameter.LimitedEpochs != 0
                    && parameter.LimitedEpochs <= performanceCounter.Count)
                {
                    completedLimited = true;
                }
            }
            while (!completedLimited && isWeightsChanged);
        }