コード例 #1
0
        public static void Run()
        {
            var training = EncogUtility.LoadEGB2Memory(Config.TrainingFile);


            var pattern = new FeedForwardPattern
            {
                InputNeurons       = training.InputSize,
                OutputNeurons      = training.IdealSize,
                ActivationFunction = new ActivationTANH()
            };

            var prune = new PruneIncremental(training, pattern, 100, 1, 10,
                                             new ConsoleStatusReportable());

            prune.AddHiddenLayer(5, 50);
            prune.AddHiddenLayer(0, 50);

            Console.WriteLine("Starting prune process");

            prune.Process();

            EncogDirectoryPersistence.SaveObject(Config.NetworkFile, prune.BestNetwork);
            EncogUtility.SaveEGB(Config.TrainingFile, prune.Training);
        }
コード例 #2
0
        /// <summary>
        /// Create a simple feedforward neural network.
        /// </summary>
        /// <param name="input">The number of input neurons.</param>
        /// <param name="hidden1">The number of hidden layer 1 neurons.</param>
        /// <param name="hidden2">The number of hidden layer 2 neurons.</param>
        /// <param name="output">The number of output neurons.</param>
        /// <param name="tanh">True to use hyperbolic tangent activation function, false to
        /// use the sigmoid activation function.</param>
        /// <returns>The neural network.</returns>
        public static BasicNetwork SimpleFeedForward(int input,
                                                     int hidden1, int hidden2, int output,
                                                     bool tanh)
        {
            var pattern = new FeedForwardPattern {
                InputNeurons = input, OutputNeurons = output
            };

            if (tanh)
            {
                pattern.ActivationFunction = new ActivationTANH();
            }
            else
            {
                pattern.ActivationFunction = new ActivationSigmoid();
            }

            if (hidden1 > 0)
            {
                pattern.AddHiddenLayer(hidden1);
            }
            if (hidden2 > 0)
            {
                pattern.AddHiddenLayer(hidden2);
            }

            var network = (BasicNetwork)pattern.Generate();

            network.Reset();
            return(network);
        }
コード例 #3
0
        public static void Incremental(FileInfo dataDir)
        {
            FileInfo file = FileUtil.CombinePath(dataDir, Config.TRAINING_FILE);

            if (!file.Exists)
            {
                Console.WriteLine(@"Can't read file: " + file);
                return;
            }

            IMLDataSet training = EncogUtility.LoadEGB2Memory(file);


            var pattern = new FeedForwardPattern
            {
                InputNeurons       = training.InputSize,
                OutputNeurons      = training.IdealSize,
                ActivationFunction = new ActivationTANH()
            };

            var prune = new PruneIncremental(training, pattern, 100, 1, 10,
                                             new ConsoleStatusReportable());

            prune.AddHiddenLayer(5, 50);
            prune.AddHiddenLayer(0, 50);

            prune.Process();

            EncogDirectoryPersistence.SaveObject(file, prune.BestNetwork);
        }
コード例 #4
0
ファイル: NNMain.cs プロジェクト: MarcFletcher/OpenPokerAI
    public void Prune()
    {
      INeuralDataSet trainingSet = new BasicNeuralDataSet(networkInput, networkIdealOutput);
      FeedForwardPattern pattern = new FeedForwardPattern();
      pattern.InputNeurons = INPUT_NEURONS;
      pattern.OutputNeurons = OUTPUT_NEURONS;

      if (ACTIVIATION_FUNCTION == 1)
        pattern.ActivationFunction = new ActivationSigmoid();
      else if (ACTIVIATION_FUNCTION == 2)
        pattern.ActivationFunction = new ActivationTANH();
      else
        throw new System.Exception("Only 2 activation functions have been impletemented.");

      PruneIncremental prune = new PruneIncremental(trainingSet, pattern, 200, new ConsoleStatusReportable());

      prune.AddHiddenLayer(10, 40);
      prune.AddHiddenLayer(0, 30);

      prune.Process();

      network = prune.BestNetwork;

      Console.WriteLine("Prune process complete.");
    }
コード例 #5
0
        public static void Run()
        {
            Log("Loading training data");

            var encog       = new EncogPersistedCollection("market-training.dat", FileMode.Open);
            var trainingSet = (BasicMLDataSet)encog.Find("market-training");

            Log("Figuring out best system");

            var pattern = new FeedForwardPattern
            {
                InputNeurons       = trainingSet.InputSize,
                OutputNeurons      = trainingSet.IdealSize,
                ActivationFunction = new ActivationTANH()
            };

            var prune = new PruneIncremental(trainingSet, pattern, 100, new ConsoleStatusReportable());

            prune.AddHiddenLayer(1, 50);
            prune.AddHiddenLayer(0, 50);

            prune.Process();

            Log("Done!!!!");
        }
コード例 #6
0
        private static IMLMethod CreateFeedforwardNetwork(int input)
        {
            // construct a feedforward type network
            var pattern = new FeedForwardPattern();

            pattern.ActivationFunction = new ActivationSigmoid();
            pattern.InputNeurons       = input;
            pattern.AddHiddenLayer(5);
            pattern.OutputNeurons = 1;
            return(pattern.Generate());
        }
コード例 #7
0
        public static BasicNetwork CreateNetwork()
        {
            var pattern = new FeedForwardPattern {
                InputNeurons = 3
            };

            pattern.AddHiddenLayer(50);
            pattern.OutputNeurons      = 1;
            pattern.ActivationFunction = new ActivationTANH();
            var network = (BasicNetwork)pattern.Generate();

            network.Reset();
            return(network);
        }
コード例 #8
0
        /// <summary>
        /// Creates the feedforward network.
        /// </summary>
        /// <param name="inputsize">The inputsize.</param>
        /// <param name="outputsize">The outputsize.</param>
        /// <param name="hiddenlayers">The hiddenlayers.</param>
        /// <param name="hidden2layers">The hidden2layers.</param>
        /// <returns></returns>
        public static BasicNetwork CreateFeedforwardNetwork(int inputsize, int outputsize, int hiddenlayers, int hidden2layers)
        {
            // construct an Elman type network
            FeedForwardPattern pattern = new FeedForwardPattern();

            pattern.ActivationFunction = new ActivationTANH();
            pattern.InputNeurons       = inputsize;
            pattern.AddHiddenLayer(hiddenlayers);
            pattern.AddHiddenLayer(hidden2layers);
            pattern.OutputNeurons = outputsize;
            var network = pattern.Generate();

            return((BasicNetwork)network);
        }
コード例 #9
0
        private BasicNetwork CreateNetwork()
        {
            var pattern = new FeedForwardPattern {
                InputNeurons = 1
            };

            for (int i = 0; i < simSettings.HiddenLayers; i++)
            {
                pattern.AddHiddenLayer(simSettings.HiddenLayerNeurons);
            }

            pattern.OutputNeurons      = 1;
            pattern.ActivationFunction = new ActivationTANH();
            var network = (BasicNetwork)pattern.Generate();

            network.Reset();
            return(network);
        }
コード例 #10
0
        public static BasicNetwork CreateNetwork(int start, int end, params int[] layers)
        {
            var pattern = new FeedForwardPattern {
                InputNeurons = start
            };

            foreach (int i in layers)
            {
                pattern.AddHiddenLayer(i);
            }

            pattern.OutputNeurons      = end;
            pattern.ActivationFunction = new ActivationTANH();
            var network = (BasicNetwork)pattern.Generate();

            network.Reset();
            return(network);
        }
コード例 #11
0
ファイル: Network.cs プロジェクト: trahim4ik/VRP
        /// <see cref="INetwork.BuildFeedforwardNetwork"/>
        public INetwork BuildFeedforwardNetwork()
        {
            if (TrainedNetworkFile.Exists)
            {
                return(this);
            }

            var pattern = new FeedForwardPattern {
                ActivationFunction = new ActivationSigmoid(),
                InputNeurons       = InputCount,
                OutputNeurons      = OutputCount
            };

            var network = (BasicNetwork)pattern.Generate();

            EncogDirectoryPersistence.SaveObject(TrainedNetworkFile, network);
            TrainedNetworkFile = new FileInfo(TrainedNetworkFile.FullName);

            return(this);
        }
コード例 #12
0
        private void Step4_Pruning()
        {
            txtStatus.Text = "Prune the network";
            var trainingSet = EncogUtility.LoadCSV2Memory(Config.NormalizedTrainingFile.ToString(),
                                                          22, 1, true, CSVFormat.English, false);

            var pattern = new FeedForwardPattern()
            {
                InputNeurons       = 22,
                OutputNeurons      = 1,
                ActivationFunction = new ActivationTANH()
            };

            prune = new PruneIncremental(trainingSet, pattern, 100, 1, 10, this);
            prune.AddHiddenLayer(1, 10);
            prune.AddHiddenLayer(0, 10);

            Logs.Clear();
            pruneWorker.RunWorkerAsync();
        }
コード例 #13
0
        public EncogMaze(MazeInfo maze, int hiddenLayers = 1, int?hiddenLayerNeurons = null)
        {
            this.maze = maze;
            filePath  = Path.Combine(Environment.CurrentDirectory, maze.Name + "." + ENCOG_FILE_EXTENSION);

            if (!LoadNetwork())
            {
                // create new network
                var pattern = new FeedForwardPattern()
                {
                    InputNeurons = INPUT_RNEURONS, OutputNeurons = OUTPUT_RNEURONS
                };
                for (int i = 0; i < hiddenLayers; i++)
                {
                    pattern.AddHiddenLayer(hiddenLayerNeurons == null ? maze.Width * maze.Height : hiddenLayerNeurons.Value);
                }
                pattern.ActivationFunction = new ActivationTANH();
                network = (BasicNetwork)pattern.Generate();
                network.Reset();
            }
        }