Ejemplo n.º 1
0
        private void Commands(string[] args)
        {
            string path = "";

            switch (args[0].ToLower())
            {
            case "new":
                bestNet = null;
                //net.bestScore = 0;
                Console.WriteLine("Best network cleared.");
                break;

            case "test":
                float[] vals   = new float[args.Length - 1];
                bool    failed = false;
                for (int i = 0; i < vals.Length; i++)
                {
                    if (failed = !float.TryParse(args[i + 1], out vals[i]))
                    {
                        break;
                    }
                }
                if (failed)
                {
                    Console.WriteLine("Parsing inputs failed.");
                    break;
                }
                float[] result = bestNet.Test(vals);
                Console.Write("Result: ");
                for (int i = 0; i < result.Length; i++)
                {
                    Console.WriteLine(result[i]);
                }
                break;

            case "info":
                if (bestNet == null)
                {
                    Console.WriteLine("Neural network is empty.");
                    break;
                }
                Console.Write("\nInputs: {0}\nOutputs: {1}\nLayers: ", bestNet.array[0].array.Length, bestNet.array[bestNet.array.Length - 1].array.Length);
                for (int i = 1; i < bestNet.array.Length - 2; i++)
                {
                    Console.Write(bestNet.array[i].array.Length + " ");
                }
                Console.WriteLine("\nCurrent best score: {0}\nCurrent %ACC: {1}", bestNet.bestScore, bestNet.learnLen != 0 ? (bestNet.bestScore / (bestNet.learnLen * 2) * 100) + "%" : "Unknown");
                break;

            case "save":
                if (args.Length < 2)
                {
                    Console.WriteLine("Please specify a file path. Example: C:\\dir\\MyNeuralNet");
                    break;
                }
                if (bestNet == null)
                {
                    Console.WriteLine("Cannot save an empty network.");
                    break;
                }
                args[0] = "";
                path    = string.Join(" ", args).Trim();
                if (!path.EndsWith(".znn"))
                {
                    path += ".znn";
                }

                bestNet.SaveNet(path);

                Console.WriteLine("Saved to file {0}\n", path);
                break;

            case "load":
                args[0] = "";
                bool noBest = false;
                if (args[1] == "--noscore" || args[1] == "-ns")
                {
                    noBest  = true;
                    args[1] = "";
                }
                path = string.Join(" ", args).Trim();
                if (!path.EndsWith(".znn"))
                {
                    path += ".znn";
                }
                if (NeuralNet.LoadNet(ref bestNet, path))
                {
                    if (noBest)
                    {
                        bestNet.bestScore = 0;
                    }
                    Console.WriteLine(path + " loaded.\n");
                }
                else
                {
                    Console.WriteLine("File does not exist! {0}\n", path);
                }
                break;

            case "learn":
                int bestof;
                Console.WriteLine("Best of " + args[1]);
                if (int.TryParse(args[1], out bestof))
                {
                    LearnSession(bestof);
                }
                break;

            case "help":
                Console.WriteLine("\nhelp\n- Shows this help dialog.\n\n" +
                                  "new\n- Clears the current best neural network so a new one can be created.\n\n" +
                                  "save [file]\n- Saves the 'best' neural network to [file].\n\n" +
                                  "load [-ns] [file]\n- Loads the 'best' neural network from [file].\n-ns : Load without the 'best score.'\n\n" +
                                  "test [inputs]\n- Tests the neural network against the inputs and returns its outputs. Missing inputs are 0. Excess inputs are truncated.\n\n" +
                                  "learn [x]\n- Sends the current neural network through [x] training sessions, or creates one.\n\n" +
                                  "info\n- Gives information about the current neural network.\n\n" +
                                  "exit\n- Quits the program.\n");
                break;

            case "exit":
                Environment.Exit(0);
                break;

            default:
                Console.WriteLine("Unknown command.");
                break;
            }
        }