From 5a1c1eca64e7a4ae4fd5417d851ed921e1555acf Mon Sep 17 00:00:00 2001 From: UnknownDrone097 <48077045+UnknownDrone097@users.noreply.github.com> Date: Fri, 20 Dec 2019 13:43:00 -0500 Subject: [PATCH] Update NN.cs --- NN.cs | 56 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/NN.cs b/NN.cs index 3be93bf..4317319 100644 --- a/NN.cs +++ b/NN.cs @@ -17,8 +17,8 @@ class NN public int NCount = 17; public int ONCount = 10; int ConvSteps = 1; - public int PoolSize = 5; - public int KernelSize = 3; + public int PoolSize = 2; + public int KernelSize = 2; public List Convolutions { get; set; } public List Poolings { get; set; } public List Layers { get; set; } @@ -97,7 +97,7 @@ public void Init() } } } - public void Run(double[,] image, int correct) + public void Run(double[,] image, int correct, bool testing) { double[,] input = new double[28, 28]; //Deepclone? @@ -114,36 +114,38 @@ public void Run(double[,] image, int correct) if (i == 0) { Layers[i].Calculate(input); continue; } Layers[i].Calculate(Layers[i - 1].Values, i == Layers.Count - 1); } - //Backward - for (int i = Layers.Count - 1; i >= 0; i--) + if (!testing) { - if (i == Layers.Count - 1) { Layers[i].Backprop(correct); continue; } - Layers[i].Backprop(Layers[i + 1]); - } - for (int i = NumConvPools - 1; i >= 0; i--) - { - if (i == 0) + //Backward + for (int i = Layers.Count - 1; i >= 0; i--) { - Poolings[i].Backprop(Layers[0], PoolSize); - Convolutions[i].Backprop(Poolings[i]); + if (i == Layers.Count - 1) { Layers[i].Backprop(correct); continue; } + Layers[i].Backprop(Layers[i + 1]); } - else + for (int i = NumConvPools - 1; i >= 0; i--) { - //Undefined for now + if (i == 0) + { + Poolings[i].Backprop(Layers[0], PoolSize); + Convolutions[i].Backprop(Poolings[i]); + } + else + { + //Undefined for now + } + } + //Descend + //Need a convolution descent loop + for (int i = 0; i < NumConvPools; i++) + { + Convolutions[i].Descend(image, Momentum, LearningRate, ConvSteps, UseMomentum); + } + for (int i = 0; i < Layers.Count; i++) + { + if (i == 0) { Layers[i].Descend(input, Momentum, LearningRate, UseMomentum); continue; } + Layers[i].Descend(Layers[i - 1].Values, Momentum, LearningRate, i == Layers.Count - 1, UseMomentum); } } - //Descend - //Need a convolution descent loop - for (int i = 0; i < NumConvPools; i++) - { - Convolutions[i].Descend(image, Momentum, LearningRate, ConvSteps, UseMomentum); - } - for (int i = 0; i < Layers.Count; i++) - { - if (i == 0) { Layers[i].Descend(input, Momentum, LearningRate, UseMomentum); continue; } - Layers[i].Descend(Layers[i - 1].Values, Momentum, LearningRate, i == Layers.Count - 1, UseMomentum); - } - //Report values Guess = -1; double certainty = -5; double error = 0; for (int i = 0; i < ONCount; i++)