Пример #1
0
        static private void Train(double[][] Data, int input, int output)
        {
            //set parameters in layers
            int numHidden = 10;

            //create layers and construct them
            List <NNlayers> Nlist = new List <NNlayers>();
            NNlayers        N1    = new NNlayers(NNlayers.Layers_family.Affine, input, numHidden);
            NNlayers        N2    = new NNlayers(NNlayers.Layers_family.BN, numHidden, numHidden);
            NNlayers        N3    = new NNlayers(NNlayers.Layers_family.Tanh, numHidden, numHidden);
            NNlayers        N4    = new NNlayers(NNlayers.Layers_family.Affine, numHidden, output);

            Nlist.Add(N1);
            Nlist.Add(N2);
            Nlist.Add(N3);
            Nlist.Add(N4);

            //create a NN class
            Ann = new ArtificialNeuralNetwork(Nlist.ToArray(), input, output);
            Ann.PositiveLimit = 0.5;//default = 0.7
            int    maxEpochs = 100;
            double learnRate = 0.05;

            //create a error monitor backgroundworker
            BackgroundWorker BGW = new BackgroundWorker();

            BGW.DoWork += new DoWorkEventHandler(backgroundWorker_NN_DoWork);
            BGW.RunWorkerAsync(maxEpochs);

            //train
            Ann.TrainModel(Data, maxEpochs, learnRate, 0);



            double trainAcc = Ann.Accu_train;

            Console.Write("\nFinal accuracy on train data = " +
                          trainAcc.ToString("F4"));

            double testAcc = Ann.Accu_test;

            Console.Write("\nFinal accuracy on test data = " +
                          testAcc.ToString("F4"));
            Console.Write("\nTrain finish");

            string site = System.DateTime.Now.ToString("yyMMddHHmm") + "_learnproj";

            Directory.CreateDirectory(site);
            Ann.Save_network(site, learnRate);
            Ann.Save_H5files(site);

            Console.Write("\nVariables have been save in " + site);
        }
Пример #2
0
        static private void Train(double[][] Data, int input, int output)
        {
            //set parameters in layers
            int numHidden  = 100;
            int numHidden2 = 100;
            int maps       = 16;
            int Deep1      = 20;
            int Deep2      = 40;
            int windows    = 2;
            //create layers and construct them
            List <NNlayers> Nlist = new List <NNlayers>();

            NNlayers C1     = new NNlayers(NNlayers.Layers_family.Convolution, input, Deep1, 3, false);
            NNlayers C2     = new NNlayers(NNlayers.Layers_family.Maxpool, (input - 3 + 1), Deep1, 2);
            int      numCov = (int)Math.Ceiling((double)(input - 3 + 1) / 2);
            NNlayers N1     = new NNlayers(NNlayers.Layers_family.BN, numCov * Deep1, numCov * Deep1);
            NNlayers H2     = new NNlayers(NNlayers.Layers_family.ReLU, numCov * Deep1, numCov * Deep1);

            NNlayers C3      = new NNlayers(NNlayers.Layers_family.Convolution, numCov, Deep2, 3, Deep1, false);
            NNlayers C4      = new NNlayers(NNlayers.Layers_family.Meanpool, (numCov - 3 + 1), Deep2, 2);
            int      numCov2 = (int)Math.Ceiling((double)(numCov - 3 + 1) / 2) * Deep2;
            //NNlayers N1 = new NNlayers(NNlayers.Layers_family.Affine, (int)Math.Ceiling((double)(input - mapsize + 1)/windows)* maps, numHidden);
            NNlayers N2 = new NNlayers(NNlayers.Layers_family.BN, numCov2, numCov2);
            //NNlayers N3 = new NNlayers(NNlayers.Layers_family.ReLU, numHidden, numHidden);

            NNlayers H3  = new NNlayers(NNlayers.Layers_family.ReLU, numCov2, numCov2);
            NNlayers N10 = new NNlayers(NNlayers.Layers_family.Affine, numCov2, output);

            //NNlayers N11 = new NNlayers(NNlayers.Layers_family.Sigmoid, output, output);
            Nlist.Add(C1);
            Nlist.Add(C2);
            Nlist.Add(N1);
            Nlist.Add(H2);
            Nlist.Add(C3);
            Nlist.Add(C4);
            //Nlist.Add(N1);
            Nlist.Add(N2);
            Nlist.Add(H3);

            Nlist.Add(N10);
            //Nlist.Add(N11);

            //create a NN class
            Ann = new ArtificialNeuralNetwork(Nlist.ToArray(), input, output);
            Ann.PositiveLimit = 0.7;//default = 0.7
            Ann.Batchsize     = 100;
            int    maxEpochs = 4000;
            double learnRate = 0.005;

            //create a error monitor backgroundworker
            BackgroundWorker BGW = new BackgroundWorker();

            BGW.DoWork += new DoWorkEventHandler(backgroundWorker_NN_DoWork);
            BGW.RunWorkerAsync(maxEpochs);

            //train
            Ann.TrainModel(Data, maxEpochs, learnRate, 0);



            double trainAcc = Ann.Accu_train;

            Console.Write("\nFinal accuracy on train data = " +
                          trainAcc.ToString("F4"));

            double testAcc = Ann.Accu_test;

            Console.Write("\nFinal accuracy on test data = " +
                          testAcc.ToString("F4"));
            Console.Write("\nTrain finish");

            string site = System.DateTime.Now.ToString("yyMMddHHmm") + "_learnproj";

            Directory.CreateDirectory(site);
            Ann.Save_network(site, learnRate);
            Ann.Save_H5files(site);

            Console.Write("\nVariables have been save in " + site);
        }