Пример #1
0
        /// <summary>
        /// Training the network (Async call)
        /// </summary>
        /// <param name="inputPatterns">Input patterns set</param>
        /// <param name="outputPatterns">Output patterns set</param>
        /// <param name="errorTarget">Target error</param>
        /// <param name="mode">Initialization mode</param>
        /// <returns>Returns true if the training is successful, otherwise it returns false</returns>
        public async Task <bool> TrainingAsync(
            double[][] inputPatterns,
            double[][] outputPatterns,
            double errorTarget = 0.01,
            SynInitMode mode   = SynInitMode.NGUYEN_WINDROW
            )
        {
            try
            {
                bool result = false;

                await Task.Run(() =>
                {
                    ThreadStart work = delegate
                    {
                        try
                        {
                            result = Training(inputPatterns, outputPatterns, errorTarget, mode);
                        } catch (Exception e) { throw e; }
                    };

                    Thread trainingThread = new Thread(work);
                    trainingThread.Start();
                    trainingThread.Join();
                });

                return(result);
            } catch (Exception e) { throw e; }
        }
Пример #2
0
        /// <summary>
        /// Training the network
        /// </summary>
        /// <param name="inputPatterns">Input patterns set</param>
        /// <param name="outputPatterns">Output patterns set</param>
        /// <param name="errorTarget">Target error</param>
        /// <param name="maxEpochs">Maximum number of epochs</param>
        /// <param name="mode">Weights initialization mode</param>
        /// <param name="learningRate">Learning rate</param>
        /// <returns>Returns true if the training is successful, otherwise it returns false</returns>
        public bool Training(
            double[][] inputPatterns,
            double[][] outputPatterns,
            double errorTarget  = 0.01,
            uint maxEpochs      = 100000,
            SynInitMode mode    = SynInitMode.FAN_IN,
            double learningRate = 0.25
            )
        {
            IntPtr p_in;
            IntPtr p_out;

            // Conversion to unmanaged types
            LibsannInvoke.MatrixConversion(inputPatterns, out p_in);
            LibsannInvoke.MatrixConversion(outputPatterns, out p_out);

            _currentError = LibsannInvoke.mAdelineTrainingWithWindrowHoff(
                _network, p_in, p_out, (uint)inputPatterns.Count(), _inputSize, _outputSize, errorTarget, maxEpochs, learningRate, mode);

            if (errorTarget < _currentError)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Пример #3
0
 public extern static double MlpTrainingWithPropagation(
     IntPtr net,
     IntPtr inputPatterns,
     IntPtr outputPatterns,
     uint inputRows,
     uint numberOfInputUnits,
     uint numberOfUnitsForOutputLayer,
     IntPtr trainAlg,
     SynInitMode mode);
Пример #4
0
 public extern static double mAdelineTrainingWithWindrowHoff(
     IntPtr net,
     IntPtr inputPatterns,
     IntPtr outputPatterns,
     uint inputRows,
     uint numberOfInputNeurons,
     uint numberOfOutputNeurons,
     double errorTarget,
     uint maxEpochs,
     double learningRate,
     SynInitMode mode);
Пример #5
0
        /// <summary>
        /// Training the network
        /// </summary>
        /// <param name="inputPatterns">Input patterns set</param>
        /// <param name="outputPatterns">Output patterns set</param>
        /// <param name="errorTarget">Target error</param>
        /// <param name="mode">Initialization mode</param>
        /// <returns>Returns true if the training is successful, otherwise it returns false</returns>
        public bool Training(
            double[][] inputPatterns,
            double[][] outputPatterns,
            double errorTarget,
            SynInitMode mode = SynInitMode.NGUYEN_WINDROW
            )
        {
            IntPtr p_in;
            IntPtr p_out;

            try
            {
                if (trainAlg == null)
                {
                    throw new Exception("Training algorithm not initialized.");
                }

                if (stats != null)
                {
                    LibsannInvoke.ResetPropStats(stats.Value);
                }

                // Conversion to unmanaged types
                LibsannInvoke.MatrixConversion(inputPatterns, out p_in);
                LibsannInvoke.MatrixConversion(outputPatterns, out p_out);

                _currentError = LibsannInvoke.MlpTrainingWithPropagation(
                    _network, p_in, p_out, (uint)inputPatterns.Count(), _inputSize, _outputSize, trainAlg, mode);

                if (errorTarget < _currentError)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            } catch (Exception e) { throw e; }
        }
Пример #6
0
        public void Build(AnnBuild AnnBuilding)
        {
            if (network != null)
            {
                network.Destroy();
            }

            network = new Mlp(
                AnnBuilding.InputUnits,
                AnnBuilding.HiddenUnits,
                AnnBuilding.HiddenLayers,
                AnnBuilding.OutputUnits,
                AnnBuilding.Bias,
                AnnBuilding.ActivationNeuroMode
                );

            synInitMode = AnnBuilding.SynInitMode;

            network.Instantiate();

            status = NetworkStatus.UNTRAINED;

            logger.InfoFormat("Building neural network classifier: {0}", this.ToString());
        }