public float TestConnections(Convolution convolution, Random rnd) { float avgFitness = 0; for (int i = 0; i < settings.fitnessAverageIters; i++) { lastIndex = (int)(rnd.NextDouble() * (convolution.srcImgs.Count - 1)); avgFitness += convolution.EvaluateFitness(lastIndex, settings); } GC.Collect(); avgFitness /= settings.fitnessAverageIters; return(avgFitness); }
/// <summary> /// Main logic and UI /// </summary> public void Start() { convolution = new Convolution(); //Startup UI Console.Title = ("Convolutional Neural Network By Thomas"); Console.WriteLine("### Convolutional Neural Network By Thomas ###"); Console.WriteLine(); Console.WriteLine("Loading Settings..."); if (System.IO.File.Exists("settings.json")) { try { string json = System.IO.File.ReadAllText("settings.json"); settings = JsonConvert.DeserializeObject <Settings>(json); } catch (Exception e) { Console.WriteLine(e.Message); //return; } } else { try { System.IO.File.WriteAllText("settings.json", JsonConvert.SerializeObject(settings)); } catch (Exception e) { Console.WriteLine(e.Message); } } Console.WriteLine("Enter previous network path, leave bank to continue: "); string inPath = Console.ReadLine(); if (inPath.Length > 0) { try { string json = System.IO.File.ReadAllText(inPath); //Use a custom json importer because JSONConvert won't work for this LoadJSON(json); } catch (Exception e) { Console.WriteLine(e.Message); } } /*Console.WriteLine("Enter training data path, leave bank to continue: "); * string inPath = Console.ReadLine(); * if (inPath.Length < 0) * { * StartConvolution(); * } * Console.WriteLine("Enter target training data path, leave bank to continue: "); * string targetPath = Console.ReadLine(); * if (inPath.Length > 0) * {*/ Console.WriteLine("Loading training data from 'TestImgs' and 'TargetImgs'..."); convolution.LoadImages("TestImgs", "TargetImgs");//inPath, targetPath); //} Console.WriteLine("Setting up network..."); convolution.InitialiseKernel(settings.nodesPL, settings.nodesPL, settings.nodeLayers); Console.WriteLine("Network set up as " + settings.nodesPL + "x" + settings.nodesPL + " kernel with " + settings.nodeLayers + " layers."); Console.CancelKeyPress += Console_CancelKeyPress; startTime = DateTime.Now; TrainNetwork(); //I know I'm doing this wrong InterruptMenu(); //Console.WriteLine("Press any key to exit..."); //Console.ReadKey(); }