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)); }
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)); } } }
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); }
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)); }
public void Update() { foreach (var v in data) { if (v < MinValue) { MinValue = v; } if (v > MaxValue) { MaxValue = v; } } Normalizor = null; }