Exemplo n.º 1
0
 public override List <double> Train(INetwork network, IDataSet data, IStatusReporter statusHolder)
 {
     vSetStart = (int)((1 - vSetPercentage) * data.PatternCount);
     Normalizor.GetMinMaxActivationWithMargin(network.Activation.MinValue, network.Activation.MaxValue,
                                              out minValidOutput, out maxValidOutput);
     isRecursiveNet = network is RecursiveNetwork;
     return(base.Train(network, data, statusHolder));
 }
Exemplo n.º 2
0
        public void Normalize(double _maxValueFrom, double _minValueFrom, double _maxValueTo, double _minValueTo)
        {
            normalizor = new Normalizor(_minValueFrom, _maxValueFrom, _minValueTo, _maxValueTo);

            for (int i = 0; i < cases.Count; i++)
            {
                GetInput(i).MapInplace(x => normalizor.Normalize(x));

                if (HasOutput && ProblemType == ProblemType.Regression)
                {
                    GetIdealOutput(i).MapInplace(x => normalizor.Normalize(x));
                }
            }
        }
Exemplo n.º 3
0
        public void TestNormalizorMinMaxGetter()
        {
            double min;
            double max;
            double marginFactor = Normalizor.MARGIN_FACTOR;

            Normalizor.GetMinMaxActivationWithMargin(Unipolar.MinValue, Unipolar.MaxValue, out min, out max);

            double span       = (Unipolar.MaxValue - Unipolar.MinValue);
            double desiredMin = Unipolar.MinValue + marginFactor * span;
            double desiredMax = Unipolar.MaxValue - marginFactor * span;

            Assert.AreEqual(desiredMin, min);
            Assert.AreEqual(desiredMax, max);
        }
Exemplo n.º 4
0
        protected virtual double CalculateMSEError(INetwork network, IDataSet dataSet)
        {
            double mseSum = 0.0;

            foreach (Pattern p in dataSet.EnumeratePatterns())
            {
                mseSum += MSECalculator.CalculateRawMSE(p.IdealOutput - network.ComputeOutput(p.Input));
            }

            double min;
            double max;

            Normalizor.GetMinMaxActivationWithMargin(network.Activation.MinValue, network.Activation.MaxValue, out min, out max);
            return(MSECalculator.CalculateEpochMSE(mseSum, dataSet.PatternCount, min, max));
        }
Exemplo n.º 5
0
        public void Update()
        {
            foreach (var v in data)
            {
                if (v < MinValue)
                {
                    MinValue = v;
                }

                if (v > MaxValue)
                {
                    MaxValue = v;
                }
            }

            Normalizor = null;
        }