diff --git a/DeepLearnMac/MainWindow.cs b/DeepLearnMac/MainWindow.cs index b4a30e7..e496f26 100644 --- a/DeepLearnMac/MainWindow.cs +++ b/DeepLearnMac/MainWindow.cs @@ -6,574 +6,604 @@ public partial class MainWindow : Gtk.Window { - int Classification; - double[] Probability = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; - - ManagedCNN cnn; - Pixbuf Digit; - - bool IsDrawing, IsErasing, IsActivated; - - string BaseDirectory = "./"; - - Color White = new Color(255, 255, 255); - Color Black = new Color(0, 0, 0); - - FileChooserDialog ImageLoader; - - public MainWindow() : base(Gtk.WindowType.Toplevel) - { - Build(); - - InitializeNetwork(); - - InitializeUI(); - } - - protected void RenderPixbuf(Gtk.Image dest, Pixbuf src) - { - if (dest != null && src != null) - { - Throw(dest.Pixbuf); - - dest.Pixbuf = src.ScaleSimple(src.Width, src.Height, InterpType.Nearest); - } - } - - public void RenderScaled(Gtk.Image image, Pixbuf pixbuf) - { - var scaled = pixbuf.ScaleSimple(image.WidthRequest, image.HeightRequest, InterpType.Nearest); - - RenderPixbuf(image, scaled); - - Throw(scaled); - } - - protected void RenderDrawing(Gtk.Image dest, Pixbuf src) - { - if (dest != null && src != null) - { - src.CopyArea(0, 0, src.Width, src.Height, dest.Pixbuf, 0, 0); - } - } - - void PrepareImage(Gtk.Image image) - { - image.Pixbuf = new Pixbuf(Colorspace.Rgb, false, 8, image.WidthRequest, image.HeightRequest); - image.Pixbuf.Fill(0); - } - - void ClearDigit() - { - Digit = new Pixbuf(Colorspace.Rgb, false, 8, DigitBox.WidthRequest, DigitBox.HeightRequest); - Digit.Fill(0); - - PrepareImage(DigitBox); - } - - void InitializeNetwork() - { - cnn = new ManagedCNN(); - - cnn.AddLayer(new ManagedLayer()); - cnn.AddLayer(new ManagedLayer(6, 5)); - cnn.AddLayer(new ManagedLayer(2)); - cnn.AddLayer(new ManagedLayer(12, 5)); - cnn.AddLayer(new ManagedLayer(2)); - - // Setup layer 1 - convolution layer - cnn.LoadFeatureMap(BaseDirectory, "Layer02FeatureMap", 1, 5, 5, 1, 6); - cnn.LoadFeatureMapBias(BaseDirectory, "Layer02Bias", 1, 6); - - // Setup layer 3 - convolution layer - cnn.LoadFeatureMap(BaseDirectory, "Layer04FeatureMap", 3, 5, 5, 6, 12); - cnn.LoadFeatureMapBias(BaseDirectory, "Layer04Bias", 3, 12); - - // Load Network Weights - cnn.LoadNetworkWeights(BaseDirectory, "NetworkWeights", 192, 10); - cnn.LoadNetworkBias(BaseDirectory, "NetworkBias", 10); - } - - void InitializeUI() - { - var os = Environment.OSVersion; - var pid = os.Platform; - - switch(pid) - { - case PlatformID.MacOSX: - this.Title = "DeepLearnUI (OSX, Mono, Beta)"; - break; - case PlatformID.Unix: - this.Title = "DeepLearnUI (Unix/Linux/OSX, Mono, Beta)"; - break; - case PlatformID.Xbox: - this.Title = "DeepLearnUI (Xbox, Beta)"; - break; - case PlatformID.WinCE: - this.Title = "DeepLearnUI (WinCE x86/x64, Beta)"; - break; - case PlatformID.Win32NT: - this.Title = "DeepLearnUI (WinNT x86/x64, Beta)"; - break; - case PlatformID.Win32Windows: - this.Title = "DeepLearnUI (Win x86/x64, 1.0)"; - break; - default: - this.Title = "DeepLearnUI (Unknown OS, Beta)"; - break; - } - - ImageLoader = new FileChooserDialog( - "Load image", - this, - FileChooserAction.Open, - "Cancel", ResponseType.Cancel, - "Open", ResponseType.Accept - ); - - ClearDigit(); - - CopyDrawing(Digit); - - CopyClassification(); - - ProbabilityZ.IsEditable = false; - Probability1.IsEditable = false; - Probability2.IsEditable = false; - Probability3.IsEditable = false; - Probability4.IsEditable = false; - Probability5.IsEditable = false; - Probability6.IsEditable = false; - Probability7.IsEditable = false; - Probability8.IsEditable = false; - Probability9.IsEditable = false; - - ScoreBox.ModifyFont(Pango.FontDescription.FromString("Verdana 16")); - ClassificationBox.ModifyFont(Pango.FontDescription.FromString("Verdana 16")); - - for (int i = 0; i < cnn.Layers.Count; i++) - { - switch (cnn.Layers[i].Type) - { - case LayerTypes.Input: - NetworkLayers.AppendText(String.Format("{0} Input", i)); - break; - case LayerTypes.Convolution: - NetworkLayers.AppendText(String.Format("{0} Convolution", i)); - break; - case LayerTypes.Subsampling: - NetworkLayers.AppendText(String.Format("{0} Subsampling / Pooling", i)); - break; - } - } - - PrepareImage(ActivationMap); - PrepareImage(FeatureVector); - PrepareImage(Output); - PrepareImage(Weights); - PrepareImage(NetworkBias); - PrepareImage(FeatureMap); - PrepareImage(BiasMap); - - NetworkLayers.Sensitive = false; - ActivationMapScroll.Sensitive = false; - - HideFeatureMaps(); - } - - void HideFeatureMaps() - { - FeatureMapLabel.Hide(); - FeatureMap.Hide(); - - FeatureMapI.Hide(); - FeatureMapILabel.Hide(); - FeatureMapIText.Hide(); - - FeatureMapJ.Hide(); - FeatureMapJLabel.Hide(); - FeatureMapJText.Hide(); - - FeatureMapXText.Hide(); - FeatureMapXLabel.Hide(); - FeatureMapYText.Hide(); - FeatureMapYLabel.Hide(); - - BiasMap.Hide(); - BiasLabel.Hide(); - } - - void ShowFeatureMaps() - { - FeatureMapLabel.Show(); - FeatureMap.Show(); - - FeatureMapI.Show(); - FeatureMapILabel.Show(); - FeatureMapIText.Show(); - - FeatureMapJ.Show(); - FeatureMapJLabel.Show(); - FeatureMapJText.Show(); - - FeatureMapXText.Show(); - FeatureMapXLabel.Show(); - FeatureMapYText.Show(); - FeatureMapYLabel.Show(); - - BiasMap.Show(); - BiasLabel.Show(); - } - - void CopyClassification() - { - ProbabilityZ.Text = Probability[0].ToString("g10", ManagedMatrix.ci); - Probability1.Text = Probability[1].ToString("g10", ManagedMatrix.ci); - Probability2.Text = Probability[2].ToString("g10", ManagedMatrix.ci); - Probability3.Text = Probability[3].ToString("g10", ManagedMatrix.ci); - Probability4.Text = Probability[4].ToString("g10", ManagedMatrix.ci); - Probability5.Text = Probability[5].ToString("g10", ManagedMatrix.ci); - Probability6.Text = Probability[6].ToString("g10", ManagedMatrix.ci); - Probability7.Text = Probability[7].ToString("g10", ManagedMatrix.ci); - Probability8.Text = Probability[8].ToString("g10", ManagedMatrix.ci); - Probability9.Text = Probability[9].ToString("g10", ManagedMatrix.ci); - - ScoreBox.Text = String.Format("{0}%", (Probability[Classification] * 100).ToString("00.00", ManagedMatrix.ci)); - ClassificationBox.Text = String.Format("{0}", Classification.ToString("D", ManagedMatrix.ci)); - } - - public void CopyDrawing(Pixbuf bitmap) - { - RenderDrawing(DigitBox, bitmap); - } - - protected void DrawEllipse(Gdk.GC gc, Gdk.Window dest, int X, int Y, int a, int b, bool filled = false) - { - dest.DrawArc(gc, filled, X, Y, a, b, 0, 360 * 64); - } - - protected void DrawEvent(double x, double y) - { - var xx = Convert.ToInt32(x); - var yy = Convert.ToInt32(y); - - var dest = DigitBox.GdkWindow; - var gc = new Gdk.GC(dest); - - var SelectedColor = IsDrawing ? White : Black; - - gc.RgbFgColor = SelectedColor; - gc.RgbBgColor = SelectedColor; - - DrawEllipse(gc, dest, xx, yy, 16, 16, true); - } - - public void DrawActivationMap(int layer, int map) - { - if (IsActivated) - { - var pixbuf = Activation.Get(cnn, layer, map); - - RenderScaled(ActivationMap, pixbuf); - - Throw(pixbuf); - - ActivationX.Text = cnn.Layers[layer].Activation.x.ToString("D", ManagedMatrix.ci); - ActivationY.Text = cnn.Layers[layer].Activation.y.ToString("D", ManagedMatrix.ci); - - if (cnn.Layers[layer].Type == LayerTypes.Convolution) - { - var bias = Bias.Get(cnn, layer); - - RenderScaled(BiasMap, bias); - - Throw(bias); - } - } - } - - public void DrawFeatureMap(int layer, int i, int j) - { - if (IsActivated) - { - var pixbuf = Feature.Get(cnn, layer, i, j); - - FeatureMapIText.Text = i.ToString("D", ManagedMatrix.ci); - FeatureMapJText.Text = j.ToString("D", ManagedMatrix.ci); - - if (pixbuf != null) - { - FeatureMapXText.Text = pixbuf.Width.ToString("D", ManagedMatrix.ci); - FeatureMapYText.Text = pixbuf.Height.ToString("D", ManagedMatrix.ci); - } - - RenderScaled(FeatureMap, pixbuf); - - Throw(pixbuf); - } - } - - private void FeatureMapEvent(int layer) - { - if (layer >= 0 && layer < cnn.Layers.Count && cnn.Layers[layer].Type == LayerTypes.Convolution) - { - ShowFeatureMaps(); - - FeatureMapI.Sensitive = true; - FeatureMapJ.Sensitive = true; - - var i = Convert.ToInt32(FeatureMapI.Value); - var j = Convert.ToInt32(FeatureMapJ.Value); - - DrawFeatureMap(layer, i, j); - } - else - { - FeatureMapI.Sensitive = false; - FeatureMapJ.Sensitive = false; - - HideFeatureMaps(); - } - } - - private void DrawFullyConnectedLayers() - { - var featurevector = FullyConnected.Get(cnn.FeatureVector); - var output = FullyConnected.Get(cnn.Output); - var weights = FullyConnected.Get(cnn.Weights, false); - var bias = FullyConnected.Get(cnn.Bias, false); - - if (IsActivated) - { - RenderScaled(FeatureVector, featurevector); - RenderScaled(Output, output); - RenderScaled(Weights, weights); - RenderScaled(NetworkBias, bias); - } - - Throw(featurevector, output, weights, bias); - } - - protected void OnDigitEventBoxButtonPressEvent(object o, ButtonPressEventArgs args) - { - if (args.Event.Button == 1) - { - IsDrawing = true; - IsErasing = false; - - DrawEvent(args.Event.X, args.Event.Y); - } - else if (args.Event.Button == 3) - { - IsErasing = true; - IsDrawing = false; - - DrawEvent(args.Event.X, args.Event.Y); - } - } - - protected void OnDigitEventBoxButtonReleaseEvent(object o, ButtonReleaseEventArgs args) - { - IsDrawing = false; - IsErasing = false; - - Digit.GetFromDrawable(DigitBox.GdkWindow, Rgb.Colormap, 0, 0, 0, 0, Digit.Width, Digit.Height); - - RenderDrawing(DigitBox, Digit); - } - - protected void OnDigitEventBoxMotionNotifyEvent(object o, MotionNotifyEventArgs args) - { - if (IsDrawing || IsErasing) - { - DrawEvent(args.Event.X, args.Event.Y); - } - } - - protected void OnButtonClassifyClicked(object sender, EventArgs e) - { - // Classify image - Digit.GetFromDrawable(DigitBox.GdkWindow, Rgb.Colormap, 0, 0, 0, 0, Digit.Width, Digit.Height); - Classify.Pixbuf(Digit, cnn, ref Classification, ref Probability); - - CopyClassification(); - - if (IsActivated) - { - var layer = NetworkLayers.Active; - var map = Convert.ToInt32(ActivationMapScroll.Value); - - if (layer >= 0 && layer < cnn.Layers.Count && map >= 0 && map < cnn.Layers[layer].Activation.i) - { - DrawActivationMap(layer, map); - - FeatureMapEvent(layer); - } - } - - IsActivated = true; - - NetworkLayers.Sensitive = true; - - DrawFullyConnectedLayers(); - } - - protected void OnClearButtonClicked(object sender, EventArgs e) - { - if (Digit != null) - Throw(Digit); - - ClearDigit(); - - CopyDrawing(Digit); - } - - protected void OnLoadButtonClicked(object sender, EventArgs e) - { - if (!string.IsNullOrEmpty(ImageLoader.Filename)) - { - var directory = System.IO.Path.GetDirectoryName(ImageLoader.Filename); - - if (Directory.Exists(directory)) - { - ImageLoader.SetCurrentFolder(directory); - } - } - - if (ImageLoader.Run() == Convert.ToInt32(ResponseType.Accept)) - { - if (!string.IsNullOrEmpty(ImageLoader.Filename)) - { - var FileName = ImageLoader.Filename; - - try - { - if (Digit != null) - { - var temp = new Pixbuf(FileName); - - if (temp != null) - { - ClearDigit(); - - Digit = temp.ScaleSimple(DigitBox.WidthRequest, DigitBox.HeightRequest, InterpType.Hyper); - } - - Throw(temp); - - RenderPixbuf(DigitBox, Digit); - } - } - catch (Exception ex) - { - Throw(Digit, DigitBox.Pixbuf); - - Console.WriteLine("Error: {0}", ex.Message); - - ClearDigit(); - } - } - } - - ImageLoader.Hide(); - } - - protected void OnActivationMapScrollValueChanged(object sender, EventArgs e) - { - var layer = NetworkLayers.Active; - var map = Convert.ToInt32(ActivationMapScroll.Value); - - ActivationMapsTextBox.Text = map.ToString("D", ManagedMatrix.ci); - - DrawActivationMap(layer, map); - } - - protected void OnNetworkLayersChanged(object sender, EventArgs e) - { - if (IsActivated) - { - var layer = NetworkLayers.Active; - - ActivationMapScroll.Sensitive = true; - ActivationMapScroll.Value = 0; - ActivationMapScroll.Adjustment.Lower = 0; - ActivationMapScroll.Adjustment.Upper = cnn.Layers[layer].Activation.i; - - var map = Convert.ToInt32(ActivationMapScroll.Value); - - ActivationMapsTextBox.Text = map.ToString("D", ManagedMatrix.ci); - - DrawActivationMap(layer, map); - - if (layer >= 0 && layer < cnn.Layers.Count && cnn.Layers[layer].Type == LayerTypes.Convolution) - { - FeatureMapI.Value = 0; - FeatureMapI.Adjustment.Lower = 0; - FeatureMapI.Adjustment.Upper = cnn.Layers[layer].FeatureMap.i; - - FeatureMapJ.Value = 0; - FeatureMapJ.Adjustment.Lower = 0; - FeatureMapJ.Adjustment.Upper = cnn.Layers[layer].FeatureMap.j; - } - - FeatureMapEvent(layer); - } - } - - protected void OnFeatureMapJValueChanged(object sender, EventArgs e) - { - if (IsActivated) - { - FeatureMapEvent(NetworkLayers.Active); - } - } - - protected void OnFeatureMapIValueChanged(object sender, EventArgs e) - { - if (IsActivated) - { - FeatureMapEvent(NetworkLayers.Active); - } - } - - protected void CleanUpUI() - { - // Dispose Pixbufs - Throw(Digit, DigitBox.Pixbuf, ActivationMap.Pixbuf, FeatureMap.Pixbuf, BiasMap.Pixbuf); - Throw(FeatureVector.Pixbuf, Weights.Pixbuf, Output.Pixbuf, NetworkBias.Pixbuf); - - // Dispose Dialogs - Throw(ImageLoader); - } - - protected void CleanUpNetwork() - { - cnn.Free(); - } - - protected void CleanShutdown() - { - CleanUpUI(); - - CleanUpNetwork(); - } - - protected void OnDeleteEvent(object sender, DeleteEventArgs a) - { - CleanShutdown(); - - Application.Quit(); - - a.RetVal = true; - } - - protected void Throw(params IDisposable[] trash) - { - foreach (var item in trash) - { - if (item != null) - item.Dispose(); - } - } + Dialog Confirm; + + int Classification; + double[] Probability = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + ManagedCNN cnn; + Pixbuf Digit; + + bool IsDrawing, IsErasing, IsActivated; + + string BaseDirectory = "./"; + + Color White = new Color(255, 255, 255); + Color Black = new Color(0, 0, 0); + + FileChooserDialog ImageLoader; + + public MainWindow() : base(Gtk.WindowType.Toplevel) + { + Build(); + + InitializeNetwork(); + + InitializeUI(); + } + + protected void RenderPixbuf(Gtk.Image dest, Pixbuf src) + { + if (dest != null && src != null) + { + Throw(dest.Pixbuf); + + dest.Pixbuf = src.ScaleSimple(src.Width, src.Height, InterpType.Nearest); + } + } + + public void RenderScaled(Gtk.Image image, Pixbuf pixbuf) + { + var scaled = pixbuf.ScaleSimple(image.WidthRequest, image.HeightRequest, InterpType.Nearest); + + RenderPixbuf(image, scaled); + + Throw(scaled); + } + + protected void RenderDrawing(Gtk.Image dest, Pixbuf src) + { + if (dest != null && src != null) + { + src.CopyArea(0, 0, src.Width, src.Height, dest.Pixbuf, 0, 0); + } + } + + void PrepareImage(Gtk.Image image) + { + image.Pixbuf = new Pixbuf(Colorspace.Rgb, false, 8, image.WidthRequest, image.HeightRequest); + image.Pixbuf.Fill(0); + } + + void ClearDigit() + { + Digit = new Pixbuf(Colorspace.Rgb, false, 8, DigitBox.WidthRequest, DigitBox.HeightRequest); + Digit.Fill(0); + + PrepareImage(DigitBox); + } + + void InitializeNetwork() + { + cnn = Utility.LoadCNN(BaseDirectory, "modelcnn"); + } + + void InitializeUI() + { + var os = Environment.OSVersion; + var pid = os.Platform; + + switch (pid) + { + case PlatformID.MacOSX: + this.Title = "DeepLearnUI (OSX, Mono, Beta)"; + break; + case PlatformID.Unix: + this.Title = "DeepLearnUI (Unix/Linux/OSX, Mono, Beta)"; + break; + case PlatformID.Xbox: + this.Title = "DeepLearnUI (Xbox, Beta)"; + break; + case PlatformID.WinCE: + this.Title = "DeepLearnUI (WinCE x86/x64, Beta)"; + break; + case PlatformID.Win32NT: + this.Title = "DeepLearnUI (WinNT x86/x64, Beta)"; + break; + case PlatformID.Win32Windows: + this.Title = "DeepLearnUI (Win x86/x64, 1.0)"; + break; + default: + this.Title = "DeepLearnUI (Unknown OS, Beta)"; + break; + } + + Confirm = new Dialog( + "Are you sure?", + this, + DialogFlags.Modal, + "Yes", ResponseType.Accept, + "No", ResponseType.Cancel + ) + { + Resizable = false, + KeepAbove = true, + TypeHint = WindowTypeHint.Dialog, + WidthRequest = 250 + }; + + Confirm.ActionArea.LayoutStyle = ButtonBoxStyle.Center; + Confirm.WindowStateEvent += OnWindowStateEvent; + + ImageLoader = new FileChooserDialog( + "Load image", + this, + FileChooserAction.Open, + "Cancel", ResponseType.Cancel, + "Open", ResponseType.Accept + ); + + ClearDigit(); + + CopyDrawing(Digit); + + CopyClassification(); + + ProbabilityZ.IsEditable = false; + Probability1.IsEditable = false; + Probability2.IsEditable = false; + Probability3.IsEditable = false; + Probability4.IsEditable = false; + Probability5.IsEditable = false; + Probability6.IsEditable = false; + Probability7.IsEditable = false; + Probability8.IsEditable = false; + Probability9.IsEditable = false; + + ScoreBox.ModifyFont(Pango.FontDescription.FromString("Verdana 16")); + ClassificationBox.ModifyFont(Pango.FontDescription.FromString("Verdana 16")); + + for (int i = 0; i < cnn.Layers.Count; i++) + { + switch (cnn.Layers[i].Type) + { + case LayerTypes.Input: + NetworkLayers.AppendText(String.Format("{0} Input", i)); + break; + case LayerTypes.Convolution: + NetworkLayers.AppendText(String.Format("{0} Convolution", i)); + break; + case LayerTypes.Subsampling: + NetworkLayers.AppendText(String.Format("{0} Subsampling / Pooling", i)); + break; + } + } + + PrepareImage(ActivationMap); + PrepareImage(FeatureVector); + PrepareImage(Output); + PrepareImage(Weights); + PrepareImage(NetworkBias); + PrepareImage(FeatureMap); + PrepareImage(BiasMap); + + NetworkLayers.Sensitive = false; + ActivationMapScroll.Sensitive = false; + + HideFeatureMaps(); + } + + void HideFeatureMaps() + { + FeatureMapLabel.Hide(); + FeatureMap.Hide(); + + FeatureMapI.Hide(); + FeatureMapILabel.Hide(); + FeatureMapIText.Hide(); + + FeatureMapJ.Hide(); + FeatureMapJLabel.Hide(); + FeatureMapJText.Hide(); + + FeatureMapXText.Hide(); + FeatureMapXLabel.Hide(); + FeatureMapYText.Hide(); + FeatureMapYLabel.Hide(); + + BiasMap.Hide(); + BiasLabel.Hide(); + } + + void ShowFeatureMaps() + { + FeatureMapLabel.Show(); + FeatureMap.Show(); + + FeatureMapI.Show(); + FeatureMapILabel.Show(); + FeatureMapIText.Show(); + + FeatureMapJ.Show(); + FeatureMapJLabel.Show(); + FeatureMapJText.Show(); + + FeatureMapXText.Show(); + FeatureMapXLabel.Show(); + FeatureMapYText.Show(); + FeatureMapYLabel.Show(); + + BiasMap.Show(); + BiasLabel.Show(); + } + + void CopyClassification() + { + ProbabilityZ.Text = Probability[0].ToString("g10", ManagedMatrix.ci); + Probability1.Text = Probability[1].ToString("g10", ManagedMatrix.ci); + Probability2.Text = Probability[2].ToString("g10", ManagedMatrix.ci); + Probability3.Text = Probability[3].ToString("g10", ManagedMatrix.ci); + Probability4.Text = Probability[4].ToString("g10", ManagedMatrix.ci); + Probability5.Text = Probability[5].ToString("g10", ManagedMatrix.ci); + Probability6.Text = Probability[6].ToString("g10", ManagedMatrix.ci); + Probability7.Text = Probability[7].ToString("g10", ManagedMatrix.ci); + Probability8.Text = Probability[8].ToString("g10", ManagedMatrix.ci); + Probability9.Text = Probability[9].ToString("g10", ManagedMatrix.ci); + + ScoreBox.Text = String.Format("{0}%", (Probability[Classification] * 100).ToString("00.00", ManagedMatrix.ci)); + ClassificationBox.Text = String.Format("{0}", Classification.ToString("D", ManagedMatrix.ci)); + } + + public void CopyDrawing(Pixbuf bitmap) + { + RenderDrawing(DigitBox, bitmap); + } + + protected void DrawEllipse(Gdk.GC gc, Gdk.Window dest, int X, int Y, int a, int b, bool filled = false) + { + dest.DrawArc(gc, filled, X, Y, a, b, 0, 360 * 64); + } + + protected void DrawEvent(double x, double y) + { + var xx = Convert.ToInt32(x); + var yy = Convert.ToInt32(y); + + var dest = DigitBox.GdkWindow; + var gc = new Gdk.GC(dest); + + var SelectedColor = IsDrawing ? White : Black; + + gc.RgbFgColor = SelectedColor; + gc.RgbBgColor = SelectedColor; + + DrawEllipse(gc, dest, xx, yy, 16, 16, true); + } + + public void DrawActivationMap(int layer, int map) + { + if (IsActivated) + { + var pixbuf = Activation.Get(cnn, layer, map); + + RenderScaled(ActivationMap, pixbuf); + + Throw(pixbuf); + + ActivationX.Text = cnn.Layers[layer].Activation.x.ToString("D", ManagedMatrix.ci); + ActivationY.Text = cnn.Layers[layer].Activation.y.ToString("D", ManagedMatrix.ci); + + if (cnn.Layers[layer].Type == LayerTypes.Convolution) + { + var bias = Bias.Get(cnn, layer); + + RenderScaled(BiasMap, bias); + + Throw(bias); + } + } + } + + public void DrawFeatureMap(int layer, int i, int j) + { + if (IsActivated) + { + var pixbuf = Feature.Get(cnn, layer, i, j); + + FeatureMapIText.Text = i.ToString("D", ManagedMatrix.ci); + FeatureMapJText.Text = j.ToString("D", ManagedMatrix.ci); + + if (pixbuf != null) + { + FeatureMapXText.Text = pixbuf.Width.ToString("D", ManagedMatrix.ci); + FeatureMapYText.Text = pixbuf.Height.ToString("D", ManagedMatrix.ci); + } + + RenderScaled(FeatureMap, pixbuf); + + Throw(pixbuf); + } + } + + private void FeatureMapEvent(int layer) + { + if (layer >= 0 && layer < cnn.Layers.Count && cnn.Layers[layer].Type == LayerTypes.Convolution) + { + ShowFeatureMaps(); + + FeatureMapI.Sensitive = true; + FeatureMapJ.Sensitive = true; + + var i = Convert.ToInt32(FeatureMapI.Value); + var j = Convert.ToInt32(FeatureMapJ.Value); + + DrawFeatureMap(layer, i, j); + } + else + { + FeatureMapI.Sensitive = false; + FeatureMapJ.Sensitive = false; + + HideFeatureMaps(); + } + } + + private void DrawFullyConnectedLayers() + { + var featurevector = FullyConnected.Get(cnn.FeatureVector); + var output = FullyConnected.Get(cnn.Output); + var weights = FullyConnected.Get(cnn.Weights, false); + var bias = FullyConnected.Get(cnn.Bias, false); + + if (IsActivated) + { + RenderScaled(FeatureVector, featurevector); + RenderScaled(Output, output); + RenderScaled(Weights, weights); + RenderScaled(NetworkBias, bias); + } + + Throw(featurevector, output, weights, bias); + } + + protected void OnDigitEventBoxButtonPressEvent(object sender, ButtonPressEventArgs args) + { + if (args.Event.Button == 1) + { + IsDrawing = true; + IsErasing = false; + + DrawEvent(args.Event.X, args.Event.Y); + } + else if (args.Event.Button == 3) + { + IsErasing = true; + IsDrawing = false; + + DrawEvent(args.Event.X, args.Event.Y); + } + } + + protected void OnDigitEventBoxButtonReleaseEvent(object sender, ButtonReleaseEventArgs args) + { + IsDrawing = false; + IsErasing = false; + + Digit.GetFromDrawable(DigitBox.GdkWindow, Rgb.Colormap, 0, 0, 0, 0, Digit.Width, Digit.Height); + + RenderDrawing(DigitBox, Digit); + } + + protected void OnDigitEventBoxMotionNotifyEvent(object sender, MotionNotifyEventArgs args) + { + if (IsDrawing || IsErasing) + { + DrawEvent(args.Event.X, args.Event.Y); + } + } + + protected void OnButtonClassifyClicked(object sender, EventArgs e) + { + // Classify image + Digit.GetFromDrawable(DigitBox.GdkWindow, Rgb.Colormap, 0, 0, 0, 0, Digit.Width, Digit.Height); + Classify.Pixbuf(Digit, cnn, ref Classification, ref Probability); + + CopyClassification(); + + if (IsActivated) + { + var layer = NetworkLayers.Active; + var map = Convert.ToInt32(ActivationMapScroll.Value); + + if (layer >= 0 && layer < cnn.Layers.Count && map >= 0 && map < cnn.Layers[layer].Activation.i) + { + DrawActivationMap(layer, map); + + FeatureMapEvent(layer); + } + } + + IsActivated = true; + + NetworkLayers.Sensitive = true; + + DrawFullyConnectedLayers(); + } + + protected void OnClearButtonClicked(object sender, EventArgs e) + { + if (Digit != null) + Throw(Digit); + + ClearDigit(); + + CopyDrawing(Digit); + } + + protected void OnLoadButtonClicked(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(ImageLoader.Filename)) + { + var directory = System.IO.Path.GetDirectoryName(ImageLoader.Filename); + + if (Directory.Exists(directory)) + { + ImageLoader.SetCurrentFolder(directory); + } + } + + if (ImageLoader.Run() == Convert.ToInt32(ResponseType.Accept)) + { + if (!string.IsNullOrEmpty(ImageLoader.Filename)) + { + var FileName = ImageLoader.Filename; + + try + { + if (Digit != null) + { + var temp = new Pixbuf(FileName); + + if (temp != null) + { + ClearDigit(); + + Digit = temp.ScaleSimple(DigitBox.WidthRequest, DigitBox.HeightRequest, InterpType.Hyper); + } + + Throw(temp); + + RenderPixbuf(DigitBox, Digit); + } + } + catch (Exception ex) + { + Throw(Digit, DigitBox.Pixbuf); + + Console.WriteLine("Error: {0}", ex.Message); + + ClearDigit(); + } + } + } + + ImageLoader.Hide(); + } + + protected void OnActivationMapScrollValueChanged(object sender, EventArgs e) + { + var layer = NetworkLayers.Active; + var map = Convert.ToInt32(ActivationMapScroll.Value); + + ActivationMapsTextBox.Text = map.ToString("D", ManagedMatrix.ci); + + DrawActivationMap(layer, map); + } + + protected void OnNetworkLayersChanged(object sender, EventArgs e) + { + if (IsActivated) + { + var layer = NetworkLayers.Active; + + ActivationMapScroll.Sensitive = true; + ActivationMapScroll.Value = 0; + ActivationMapScroll.Adjustment.Lower = 0; + ActivationMapScroll.Adjustment.Upper = cnn.Layers[layer].Activation.i; + + var map = Convert.ToInt32(ActivationMapScroll.Value); + + ActivationMapsTextBox.Text = map.ToString("D", ManagedMatrix.ci); + + DrawActivationMap(layer, map); + + if (layer >= 0 && layer < cnn.Layers.Count && cnn.Layers[layer].Type == LayerTypes.Convolution) + { + FeatureMapI.Value = 0; + FeatureMapI.Adjustment.Lower = 0; + FeatureMapI.Adjustment.Upper = cnn.Layers[layer].FeatureMap.i; + + FeatureMapJ.Value = 0; + FeatureMapJ.Adjustment.Lower = 0; + FeatureMapJ.Adjustment.Upper = cnn.Layers[layer].FeatureMap.j; + } + + FeatureMapEvent(layer); + } + } + + protected void OnFeatureMapJValueChanged(object sender, EventArgs e) + { + if (IsActivated) + { + FeatureMapEvent(NetworkLayers.Active); + } + } + + protected void OnFeatureMapIValueChanged(object sender, EventArgs e) + { + if (IsActivated) + { + FeatureMapEvent(NetworkLayers.Active); + } + } + + protected void CleanUpUI() + { + // Dispose Pixbufs + Throw(Digit, DigitBox.Pixbuf, ActivationMap.Pixbuf, FeatureMap.Pixbuf, BiasMap.Pixbuf); + Throw(FeatureVector.Pixbuf, Weights.Pixbuf, Output.Pixbuf, NetworkBias.Pixbuf); + + // Dispose Dialogs + Throw(ImageLoader); + } + + protected void CleanUpNetwork() + { + cnn.Free(); + } + + protected void CleanShutdown() + { + CleanUpUI(); + + CleanUpNetwork(); + } + + protected bool GetConfirmation() + { + var confirm = Confirm.Run() == (int)ResponseType.Accept; + + Confirm.Hide(); + + return confirm; + } + + protected void Quit() + { + CleanShutdown(); + + Application.Quit(); + } + + protected void OnWindowStateEvent(object sender, WindowStateEventArgs args) + { + var state = args.Event.NewWindowState; + + if (state == WindowState.Iconified) + { + Confirm.Hide(); + } + + args.RetVal = true; + } + + protected void OnDeleteEvent(object sender, DeleteEventArgs a) + { + if (GetConfirmation()) + { + Quit(); + } + + a.RetVal = true; + } + + protected void Throw(params IDisposable[] trash) + { + foreach (var item in trash) + { + if (item != null) + item.Dispose(); + } + } } diff --git a/Test098/modelcnn.json b/Test098/modelcnn.json new file mode 100644 index 0000000..dd8ef30 --- /dev/null +++ b/Test098/modelcnn.json @@ -0,0 +1 @@ +{"Layers":[{"Type":0,"OutputMaps":0,"Scale":0,"KernelSize":0,"FeatureMap":null,"Bias":null},{"Type":1,"OutputMaps":6,"Scale":0,"KernelSize":5,"FeatureMap":[[[[-2.3459,-3.3664,-0.33653,0.32087,-2.4786],[-0.6197,1.3312,2.0655,3.527,1.0439],[-0.90638,1.4972,2.3657,2.1505,1.3654],[-1.9662,1.3822,2.6327,2.0325,1.2465],[-2.1804,-0.9247,0.41913,0.8616,-0.43639]],[[-1.2641,0.4079,0.92188,3.1839,3.1015],[-1.0633,-1.7128,-3.4415,-1.3185,3.0365],[-1.364,-1.7698,-3.8611,-0.44324,4.4511],[-0.54567,-1.2358,-2.2753,0.84117,2.2031],[2.085,0.81781,0.98517,1.7394,-0.69508]],[[-1.826,1.8519,3.1779,2.0764,-0.93644],[-1.721,0.87542,1.7777,2.2343,-0.86698],[-0.94036,2.7412,3.3264,2.5121,-1.6873],[-1.5674,1.5283,2.7151,0.019385,-3.0401],[-3.0869,-0.19623,-0.88989,-3.1295,-1.8294]],[[0.053337,3.775,0.99728,-1.0319,-0.32762],[-2.4014,4.138,0.84134,-1.4042,-0.29515],[-0.9113,4.8626,1.4655,-0.93938,-0.69196],[-1.3014,3.148,2.8771,-0.61764,-2.2394],[-0.53655,3.3834,3.6059,0.050091,-1.783]],[[1.917,2.0806,1.7006,0.26529,-1.0492],[1.3087,0.41411,-1.0886,-2.9325,-3.1272],[1.0191,-1.4497,-2.6392,-3.0911,-1.3728],[-0.93279,-3.62,-2.087,-0.68048,-0.25688],[-0.39699,-2.0592,0.076946,0.22206,-0.49115]],[[-1.1994,-1.4727,0.12189,2.2592,-0.38731],[-0.71997,-2.3429,1.8561,3.616,-1.5194],[-3.1062,-1.1482,3.0356,2.4478,-2.2267],[-0.10396,2.7303,2.4692,0.45581,-0.64375],[0.95251,2.2025,0.26321,-1.8113,0.30557]]]],"Bias":[-1.8958,-1.065,-1.5458,-0.66148,-0.16142,-5.0035]},{"Type":2,"OutputMaps":0,"Scale":2,"KernelSize":0,"FeatureMap":null,"Bias":null},{"Type":1,"OutputMaps":12,"Scale":0,"KernelSize":5,"FeatureMap":[[[[-0.23986,-0.88914,-0.0022054,-0.28353,0.58466],[-0.22416,-1.259,-0.77434,-1.3921,-0.093057],[-0.93195,-1.7785,-1.4867,-0.90696,0.15626],[0.35279,-0.72504,-0.3362,0.75232,1.058],[-1.1233,-0.36443,-0.0067409,-0.26402,1.487]],[[-0.61865,0.38548,0.85514,1.9425,2.1894],[0.16681,1.8279,1.7402,1.1386,0.80305],[1.4237,0.34765,-0.24052,0.92711,1.3489],[1.2491,0.83127,0.18302,0.96528,1.0929],[0.40796,0.72903,-0.64262,0.054606,1.9944]],[[1.1216,0.22424,-0.13389,-0.4083,-0.047939],[-0.22979,0.94541,0.87219,-0.060435,-1.0016],[1.0158,1.3241,0.46644,0.21104,-0.14472],[-0.24343,0.75814,1.8891,0.87631,-0.063805],[-1.0809,0.59154,1.6343,1.5798,-0.063752]],[[0.15194,0.55636,-1.1416,0.54254,0.65478],[-0.026925,-0.92807,-1.5397,-0.081287,0.72916],[-0.23267,-1.0701,-0.60216,-0.13439,0.82283],[-0.30529,-0.50805,-0.78431,-0.26743,0.82996],[-1.7827,-0.24057,-0.49851,-0.10869,0.10419]],[[0.67334,1.4216,-0.32145,0.29647,-0.012959],[1.1061,1.6895,0.12779,-0.00063805,0.020935],[0.42644,2.2659,0.066479,-0.81751,0.026389],[1.2592,2.0,-0.52077,-0.84426,0.029961],[1.0311,0.69602,0.49146,-0.12161,0.22848]],[[-0.35175,-0.62173,-0.14489,-0.065875,-0.15492],[0.41841,-2.6993,-0.67217,-0.05794,0.86861],[-0.12964,-2.679,-0.071441,-0.13544,0.34308],[0.17258,-0.80059,-1.3338,-0.50207,0.20147],[-0.47215,-0.36592,0.18109,0.15761,0.42768]],[[0.80029,0.11728,1.4592,0.65575,0.9115],[-0.22563,1.239,0.91573,-0.18215,1.2903],[-0.04566,0.21905,-0.3752,-1.4612,-1.366],[-0.064908,0.44565,-0.79022,-0.17861,-0.87872],[-0.47164,-1.3418,-0.059109,0.51686,-1.2385]],[[-0.32721,-0.92584,-0.47004,-0.31659,0.90473],[-0.011138,-0.47133,0.59161,0.26318,1.9355],[-0.64751,-0.91496,1.5192,0.039554,1.3077],[-0.81564,0.042006,2.1089,0.72596,-0.35657],[-0.20165,0.57992,0.64846,0.038234,-1.1921]],[[-0.82464,-0.38859,-0.3986,-0.17786,-0.65405],[-0.063305,0.24185,-1.0343,-1.7168,-1.1477],[-0.92486,-0.64765,-0.97937,-1.7316,-2.0643],[0.21404,0.15703,-0.82165,-0.91196,-1.2616],[1.7926,1.0667,-0.82705,-0.73514,-0.77295]],[[0.12015,0.16299,0.19015,-0.60938,0.28726],[0.46156,0.79227,-0.95948,-1.2874,1.8433],[0.28001,0.34234,-0.48479,-2.5396,-0.28745],[0.36083,0.14626,-1.4043,-1.8012,-0.60399],[0.43704,-0.22049,-1.8252,-1.1458,0.53725]],[[-0.27526,-1.3034,-0.081959,-1.5227,-1.1137],[1.262,-0.56588,0.51411,-1.4238,-0.60051],[-0.10445,1.2928,-0.039128,-1.326,-0.31638],[1.518,0.46346,0.13647,0.018916,-0.86267],[0.43308,-0.10229,0.44118,0.12646,-1.7012]],[[1.2337,0.050808,0.046282,0.15602,-0.49538],[0.33202,0.46416,2.0719,0.26717,-1.5562],[-0.14736,0.77387,2.0127,-0.40274,-0.89835],[-0.24979,1.4575,2.3828,-0.21398,0.56282],[-0.86151,1.5668,0.5404,0.061914,1.2829]]],[[[1.1942,0.58397,0.33249,-0.78048,-0.73822],[1.166,-0.049543,0.20217,1.6606,1.4239],[0.73571,0.31926,1.4219,1.849,0.37259],[0.18339,0.66882,1.4779,0.59813,0.088646],[1.3559,0.24839,0.030633,0.069459,-0.19456]],[[0.083385,1.3269,1.3284,0.13642,-1.932],[0.80211,-0.52807,-1.5579,-1.7787,0.25936],[0.39416,-0.10893,-0.70154,-1.0785,-0.014149],[-0.31912,-0.76059,-0.17545,-0.9056,0.24518],[-0.29233,0.44887,0.38482,-0.43904,0.31851]],[[-0.66631,-1.1748,0.13126,0.83783,-0.5803],[0.38951,-1.0286,-1.323,0.51545,0.75462],[0.64859,-0.1487,-0.70701,-0.96839,-0.27068],[0.73129,-1.1337,-0.82764,-1.0267,-0.41683],[0.58041,-1.3538,-1.7681,-1.0066,-1.2617]],[[0.027188,-1.3033,-0.054104,0.29665,-0.15559],[-0.50151,-0.15932,1.3204,0.31166,-0.062969],[-0.91356,1.3032,0.90845,-0.37834,0.65246],[-1.0043,0.71521,0.0092658,0.38127,0.65066],[-0.60169,0.77964,0.28635,-0.22757,-0.37646]],[[-2.0025,-1.395,0.63295,-1.0026,-0.87396],[-1.2164,-1.8261,-0.57926,-1.2532,-0.8112],[-0.86805,-1.5472,0.069535,-0.043411,-0.63319],[-2.0537,-1.703,-0.11477,1.2648,0.37237],[0.22734,-1.1253,-0.39224,0.49118,-0.57659]],[[-0.014257,0.89611,-0.18714,-0.43406,-0.64285],[0.87873,1.8667,-0.64087,-1.5618,-0.92508],[0.011294,2.005,-0.52664,-2.4244,-1.3847],[0.25272,0.42224,-0.60584,-1.6544,-0.1004],[1.5802,0.25213,-0.42074,-1.1149,-0.21115]],[[-0.040671,0.85864,1.0678,0.18698,0.056631],[0.5833,0.80373,0.43772,-0.87243,0.20044],[0.2575,-1.173,0.02899,1.8321,1.133],[0.067911,-0.19759,0.073987,0.27107,-0.20504],[0.47636,0.62084,0.87998,0.56576,-1.5207]],[[1.3851,0.3356,-0.032439,-0.30572,-1.076],[0.85582,-0.70669,0.15202,-1.0327,-1.7195],[1.0738,-0.72713,-1.527,-0.97468,0.10591],[0.47691,-0.39464,-1.6775,-0.46721,0.066336],[0.47035,-0.90666,-0.79586,0.49134,-0.20194]],[[0.61589,-0.089255,-0.097464,1.3142,1.7169],[0.95473,0.49669,1.9236,3.0361,2.626],[0.76541,-0.77513,-0.14707,2.0519,1.8197],[0.70992,0.48559,-0.060957,1.0998,0.89558],[-0.967,0.11938,0.20379,1.0281,1.2436]],[[-0.25028,-1.2656,-0.56103,-0.76386,-0.90642],[-0.19941,-0.78954,0.62108,0.90097,-0.946],[-1.3246,-0.7301,0.41591,1.57,0.52264],[-1.0293,0.2781,0.96909,1.3974,1.0398],[-0.88352,-0.8417,0.91013,0.42066,0.33199]],[[-0.66758,-1.1026,0.60373,-1.6463,-0.6907],[-0.041696,0.894,-0.53326,-0.81964,0.90362],[0.48532,0.95887,-0.99375,0.82672,-0.028139],[1.1323,1.1805,-0.41083,1.5496,-0.33767],[-0.25746,1.0957,1.2779,0.98631,-0.25575]],[[0.30145,-0.04947,0.96275,-0.049227,0.40737],[0.87455,0.68674,-0.098197,-0.16134,1.5664],[0.30947,1.2973,-0.56203,1.5939,2.0536],[0.55762,0.91082,-1.3917,-0.19521,0.72531],[-0.33937,-0.024301,-1.0357,-0.87214,-0.14506]]],[[[-1.2544,-0.26352,0.18565,1.4224,-1.0222],[-0.12677,-0.034115,0.23563,-0.57301,-0.77543],[-0.53118,-0.32068,-0.76588,-0.21636,0.18318],[0.11259,-0.76045,-0.3444,0.57832,-0.037464],[-0.4934,0.13193,-0.35053,-0.42761,-0.57293]],[[0.29059,-0.3049,0.0038786,0.58157,2.3961],[0.93575,2.0754,1.6898,2.1758,0.75073],[1.2225,1.7107,0.76722,0.73193,0.26707],[-0.6535,-0.4845,0.26176,0.87394,0.35132],[-0.52724,-0.42447,-0.26195,0.276,-0.246]],[[-0.71864,-0.26012,-0.22978,-1.0634,0.44187],[-0.40366,1.5062,0.68204,-1.3099,-0.076715],[0.25303,0.95334,1.6385,0.7413,0.34289],[-0.94762,0.2007,1.0448,1.4479,0.91281],[-0.56073,0.31075,0.36853,0.42297,0.61833]],[[-0.78873,-0.10712,-2.4086,-1.2177,-1.217],[-0.25256,-0.26097,-1.7908,0.79054,0.73722],[-0.2358,-1.4807,-0.66276,0.6588,-0.32475],[-0.040193,-1.2502,-0.11701,-0.1268,0.71566],[-0.84885,-0.76706,-0.26327,0.1609,0.8072]],[[2.2311,2.6245,-0.51484,-0.8038,-0.46478],[0.98422,1.9828,-0.85943,0.24748,0.73193],[-0.35828,1.2921,-0.48455,-0.89642,-0.59009],[-0.83564,1.2299,-0.14143,-0.6763,-0.75815],[-1.1064,0.92456,1.027,0.53455,0.26952]],[[-1.0157,-2.3436,0.5374,0.065918,-0.31376],[0.83013,-1.3883,0.41603,0.53029,0.47695],[-0.031528,-1.7887,0.24018,0.6953,0.27657],[-0.041244,-0.81845,0.034386,0.73572,0.64781],[-0.29235,-0.55113,-0.55672,1.7276,0.69106]],[[0.028243,0.16177,-0.79108,-0.80693,-0.53335],[0.039403,0.2431,0.85531,1.6715,1.0518],[0.70114,-0.31673,-0.049499,-2.3738,-0.56532],[0.072126,-1.2905,-1.4577,-2.4402,-0.25392],[0.019124,-0.2489,-0.7097,-0.13322,0.016617]],[[-1.143,-1.3067,-1.576,-0.8496,0.37691],[-0.62996,-0.70242,0.0023664,0.060908,0.26287],[0.72696,-1.5422,1.5373,0.56312,0.46116],[0.72708,0.051844,1.3568,-0.38737,-0.13717],[-0.27801,0.55224,0.31768,-1.622,-0.83706]],[[0.91639,0.34988,-0.66016,-0.10606,0.17641],[-0.3874,-0.24697,-1.7028,-1.4023,-0.64115],[0.58013,0.26083,-1.2395,-0.55584,-1.7876],[-0.68349,-0.62907,-0.50896,-0.26895,-0.67124],[0.78312,-1.1997,-1.1589,-0.52608,-0.77562]],[[0.19283,-1.1273,0.14921,1.3449,0.74086],[-0.41436,0.81564,-0.95295,-0.7748,1.3905],[1.245,0.55395,-1.103,-1.5246,0.99437],[0.24043,-1.2981,-0.95036,-2.0342,-1.2411],[0.28051,0.24569,-0.148,-0.62202,-0.10767]],[[0.4534,0.20692,-1.1957,1.5152,-0.91258],[1.217,-0.069481,1.4104,0.11134,-0.47258],[0.41593,1.1413,2.1163,-0.93199,0.4947],[0.44736,1.294,-1.1914,-1.0076,-0.18538],[2.3378,0.07981,-0.52843,-0.99378,0.19329]],[[0.54413,-0.28266,-0.77871,1.7515,-0.19971],[0.50204,-0.62489,0.55701,-0.15596,-0.72576],[-0.17204,-1.4397,2.0558,-2.0599,-0.67897],[-1.1184,-0.89076,1.3423,-0.97845,0.34481],[-0.59867,-0.075407,-0.26604,-0.48372,-0.36968]]],[[[-0.90606,-0.081853,0.063047,0.9643,-0.35516],[-0.5486,0.006162,-0.20318,0.0030865,-0.26714],[-1.2511,-0.97063,-0.60957,-0.57394,-0.44405],[-0.7944,-0.33205,-0.41579,0.37521,1.8153],[-1.5646,-0.46327,-0.02523,1.2176,1.1735]],[[-1.0403,-0.23494,-0.19109,-1.7609,-0.89091],[0.74784,0.40124,-0.62392,-1.6808,-0.92984],[0.96835,-0.062632,-0.69756,-1.1096,-1.1109],[0.19466,-0.24493,-0.76842,-0.96448,-0.07607],[0.51787,-0.045431,-0.68582,-0.67507,-0.98031]],[[-0.30806,-0.60128,-1.5793,-0.59129,-1.0998],[-0.059383,-0.4379,0.018888,-0.64722,-0.93544],[0.27635,-0.82351,0.99231,0.06589,-0.22055],[-0.70085,-1.2627,0.21197,0.91912,1.2124],[-1.209,-1.4597,-0.87376,-0.25333,0.84707]],[[-0.45679,0.28816,-0.92623,-1.2801,-0.19818],[0.040449,-0.090815,-0.74092,-0.20129,0.57258],[0.85605,-0.49232,-0.66818,0.61433,0.63159],[0.2907,-1.1978,-1.1366,-0.17081,0.39852],[-1.071,-2.6637,0.076951,0.45569,1.0977]],[[-0.64056,0.97204,1.6639,-0.5917,-0.43021],[0.29365,1.5038,0.52079,-0.25021,-0.29213],[1.7106,1.6239,0.54034,-0.73731,-0.32793],[-0.1597,0.97506,0.36517,-0.23403,0.36685],[0.73768,1.2198,1.1529,1.4343,1.0611]],[[-0.44921,-2.648,-0.38414,0.64917,0.069602],[0.73544,-1.0093,-0.57316,0.88061,0.73056],[0.16388,-0.91583,-0.99084,0.78263,1.2213],[0.30498,-0.16136,-0.98949,-0.89076,1.7811],[1.4064,-0.8263,-2.1352,-0.15193,1.732]],[[-0.74659,0.01708,0.10866,1.4102,2.029],[0.59415,1.9027,1.3688,2.037,0.33848],[1.3776,1.0928,0.11048,-0.64407,-1.608],[0.27545,-0.58589,-1.1738,-1.7958,-0.80435],[-1.7344,-1.6717,-1.8699,-1.2073,0.031944]],[[-1.537,-0.3747,-1.0937,-0.24978,-0.19243],[-1.1257,-0.25001,-0.8316,0.70402,1.958],[0.65372,-0.21761,-0.3775,2.5034,0.59103],[0.48019,-0.046059,1.2348,0.051063,-0.73669],[-0.4811,1.243,0.93369,-0.8687,0.10071]],[[0.79916,-0.41675,-1.2061,0.49785,-0.077053],[0.59291,-1.222,-1.5643,-0.31819,-1.4719],[0.62155,-1.9762,-1.3267,-0.060362,-0.11743],[0.62864,-1.0723,-0.6255,0.19409,0.30461],[1.8333,1.2847,0.27731,0.032342,0.054808]],[[-0.077161,-1.2327,-1.3649,-0.94111,1.4458],[-0.047862,0.90812,-0.12017,-1.2819,0.76125],[0.88465,-0.1294,-1.3953,-0.54425,1.1239],[0.66634,-0.21204,-0.80786,-0.56809,1.2543],[-0.41758,0.90354,0.15228,-0.22961,0.96619]],[[0.35199,0.40064,-0.47039,1.0598,1.3858],[0.38172,-0.21793,-0.33817,2.0419,1.396],[-0.27871,-0.097306,0.94574,0.891,-1.3682],[0.86699,1.9773,-0.47053,-2.3484,-2.5056],[2.293,-0.0053245,-1.7783,-1.8855,-2.0342]],[[0.10763,1.1149,-1.4783,-2.2544,0.68492],[1.1238,-0.68812,-2.1839,-1.0877,-1.1828],[-0.23202,-2.0781,0.052399,-0.69696,-1.1704],[-1.6635,-1.257,1.4819,0.088191,-0.066282],[-2.2024,-2.4933,0.38897,-0.38094,-0.20458]]],[[[-1.1653,-1.3628,-0.62001,0.379,0.49613],[-0.51171,-0.40019,0.03825,0.045237,-0.01801],[-0.64304,-0.1017,1.2548,0.54902,-0.677],[-0.52126,-0.23806,0.44676,-0.14897,0.70475],[0.97478,0.67417,0.42176,1.2404,1.6519]],[[0.08346,0.49943,0.85855,-0.28168,-0.40965],[0.022917,0.57841,-1.4144,-2.8,-0.32307],[-0.10701,-1.2627,-1.0696,0.17679,1.7326],[-1.8789,-1.3257,-0.50276,0.25023,1.4491],[-2.1251,-1.2552,0.22659,2.1519,0.20755]],[[-0.15523,-0.91535,-0.43867,0.77551,0.94357],[-0.81784,-1.7237,-1.2939,-0.027747,0.77905],[0.47579,-1.8171,-1.9782,0.31707,1.1555],[1.6875,-0.77306,-1.6305,-0.82246,1.1979],[1.0276,0.82671,0.72979,-0.89439,-0.086788]],[[-0.61563,0.11256,0.24594,-0.69543,0.0077114],[0.0039342,0.075641,1.6307,-0.29126,0.35536],[-0.10378,1.2979,0.70584,0.41031,-0.4988],[0.17541,0.68311,0.16649,0.96065,-0.73929],[1.0566,0.41568,0.13029,0.25541,0.4785]],[[-0.11535,0.12806,0.61378,-1.1691,-1.6617],[-0.55989,-0.26552,0.11517,-0.7513,0.21321],[-1.2976,-0.51918,-0.28242,0.38693,0.35291],[-1.2753,-1.1238,-0.093108,0.60663,0.53992],[-1.3487,-0.81993,-0.88303,-0.76107,-0.38292]],[[0.31406,-0.39115,-0.3292,0.37688,1.6343],[0.3639,1.0153,-0.62972,0.32708,0.30037],[0.35413,0.79522,-0.99924,0.09878,0.52285],[1.4811,-0.084905,-0.6187,-0.90381,0.26215],[1.4948,0.3081,-1.7794,-1.294,0.228]],[[-0.18122,0.1937,-2.1957,-1.2296,-1.817],[-0.16617,0.0007533,-1.0294,-0.34233,-0.94582],[0.9707,0.11963,0.48291,0.72038,-0.035629],[0.058821,-0.64405,-1.0906,-0.9973,0.79294],[0.042458,0.33541,-2.0445,-1.4112,1.9822]],[[-1.3773,-1.2286,-1.0062,-0.85869,-0.52434],[-0.3539,0.13364,-0.98183,-0.61698,0.33117],[-0.2785,-0.090388,-0.81927,2.6524,-0.28006],[-0.74236,-0.67464,-0.17707,0.79925,-0.82146],[0.046324,0.25801,0.40887,0.026859,0.73061]],[[0.39485,0.24499,-0.58117,0.42818,0.25876],[1.4217,-0.35414,-0.33899,1.0319,0.43579],[1.0512,-0.09225,0.12245,0.85204,0.82115],[0.48352,-0.34493,1.7162,1.6195,1.3769],[0.50043,0.16292,1.6112,-0.18349,0.3976]],[[-0.76951,1.0793,0.42882,0.15736,-0.53938],[0.20547,0.99348,1.6541,0.32915,-1.23],[0.39117,-0.47234,0.29775,-0.37312,-0.91256],[-0.83717,-0.30491,0.029588,0.9341,0.42221],[-0.6215,-0.088164,-0.037288,-0.22994,-0.69049]],[[0.23115,-0.45105,-0.53164,-0.66343,0.74497],[-0.31576,-0.052035,-0.98195,0.3874,0.72846],[0.26057,-0.49628,-0.20955,0.88913,-1.312],[-1.0072,-1.2282,-0.020746,-1.3274,-1.0974],[0.62935,-0.16619,-1.4045,-0.65653,0.6712]],[[0.8356,-0.50616,-1.144,-1.2807,2.1993],[-0.11649,-0.69394,-3.1223,1.7241,1.2547],[-0.63583,-1.1006,-2.0875,1.604,1.3147],[-0.094387,-0.065755,-0.1899,0.79659,-0.47268],[2.0401,0.18222,0.36035,-0.63202,-0.84657]]],[[[-0.8698,-2.0981,-0.31473,0.38164,-0.385],[-0.42018,-1.6886,-0.83326,-1.6991,-1.2599],[0.7014,-1.1706,-1.0082,-0.89386,0.97818],[0.53931,-0.75579,0.51342,0.54614,0.23212],[-0.99923,0.39891,1.3149,0.66051,2.2629]],[[1.1014,0.021843,-0.146,1.0253,0.28778],[0.27123,1.8794,0.81304,-0.36626,-0.74156],[1.703,-0.010554,-0.52282,0.82283,1.0774],[-1.6122,-1.2758,-0.65374,-0.079782,0.46249],[-1.3682,-0.49433,-0.086049,0.90403,-0.48656]],[[0.47896,-0.53973,-0.61275,-1.2273,0.16768],[0.71864,-0.25842,-1.5498,-1.1074,-0.32679],[1.9002,0.66481,-1.1762,-1.2115,-0.61917],[1.6412,1.1315,-0.1555,-0.82442,-1.4216],[1.1065,0.28691,0.58411,-0.55535,0.24757]],[[-0.35234,1.7797,-0.68967,0.63845,-0.4198],[0.68767,0.43257,0.64909,0.87905,-0.81459],[0.9088,-0.45094,2.161,0.66197,-0.71507],[0.34907,0.7993,0.77364,0.38034,-0.21277],[-0.8754,1.0865,0.28698,0.66515,0.035062]],[[-0.16197,0.3359,-1.5911,-2.1845,-2.1471],[-0.61819,1.1945,-0.92018,-0.48784,-0.36229],[-0.82057,1.2332,-1.0731,-0.5105,-0.34996],[-0.40488,1.3861,-1.4198,-0.84579,-0.95157],[1.1073,2.2787,-1.5452,-0.74945,-0.3689]],[[-0.53593,1.0462,0.78025,0.48502,0.5385],[1.3709,-0.41967,0.6771,0.58158,0.11835],[1.1571,-1.4771,1.2061,0.45942,-1.2029],[1.0002,-2.0109,0.22815,-0.89142,-0.79696],[1.0318,-1.407,1.2024,0.5034,-0.093282]],[[-0.77371,0.96236,-0.081664,0.46731,-0.36006],[0.51919,0.5524,1.0243,-0.0077704,-0.62273],[0.77,1.5118,-0.11497,-1.4348,-0.48987],[0.60649,0.10334,-0.60173,-0.76429,-0.018568],[-4.7334E-05,-0.3793,-0.2227,-0.081679,-0.29706]],[[-1.3537,-1.2615,-0.86276,-0.69589,-0.99807],[-0.64942,-0.22076,0.047542,0.21174,-0.50652],[-0.20284,-1.7985,1.0952,1.1767,-0.46974],[-0.98864,-0.70303,1.612,0.71625,-1.1193],[-1.1129,0.2633,1.2471,-0.52595,-1.1145]],[[0.43646,0.32573,0.20601,-0.0078747,0.27666],[0.49803,0.96298,0.39254,0.46943,0.49449],[-0.16768,0.064565,0.41288,0.83264,0.29003],[0.72066,1.1492,-0.82028,0.84521,0.0031798],[1.0203,1.4924,0.39449,0.17942,-0.91299]],[[0.71034,2.0919,1.9257,2.0227,0.37359],[0.30103,2.0182,0.59931,1.2398,1.0326],[0.357,0.42494,0.11025,-1.253,0.017373],[0.37006,-0.58817,0.08751,-1.0056,0.35347],[0.5015,0.48881,0.51244,0.98073,1.125]],[[-1.0283,1.3603,-0.062476,2.251,-0.944],[0.08061,-0.087847,2.0503,-0.3959,0.16182],[-0.75256,0.59894,0.43906,-1.4139,-0.20376],[-1.3347,1.1803,0.28766,-1.2691,-2.3684],[2.043,0.019735,-0.74895,-0.94148,-0.38287]],[[0.40608,0.23243,0.41192,-0.018674,0.30065],[0.25036,-0.67737,1.0392,0.96561,-0.16128],[0.042577,-0.11014,1.061,0.28162,-0.44973],[-0.96837,0.20808,1.8913,-0.86063,-0.30808],[-2.8677,0.75653,0.96035,-0.48174,-1.1162]]]],"Bias":[-0.77781,0.68264,-0.26526,0.13635,-1.3368,0.36211,-0.10352,-0.22338,0.92433,-0.5879,-1.0131,1.3282]},{"Type":2,"OutputMaps":0,"Scale":2,"KernelSize":0,"FeatureMap":null,"Bias":null}],"Weights":[[-1.5179,-1.2797,-0.70637,-2.2866,-0.99898,0.20449,0.20868,-0.13371,0.20741,-0.54511,-0.78183,0.20045,1.8795,-0.19069,0.24835,-0.17624,-1.6599,0.40452,1.7853,-0.8371,0.56385,0.19608,-0.31876,-0.90918,0.46871,-0.62759,-0.59283,-0.79132,2.1066,1.9283,0.23403,-1.4404,-0.29551,0.73841,0.61783,0.73438,-0.7562,-1.5315,-0.51355,-0.68299,-0.10154,-0.66195,-2.0294,-1.9562,0.88486,0.78453,0.33836,-2.45,0.016024,0.85665,0.30784,-2.3334,-1.5998,-0.56116,-0.70403,-0.5877,-2.3837,0.24137,-0.65496,-0.69941,-1.376,2.1794,3.3277,3.6063,-0.29817,-0.83535,0.93302,0.84505,0.293,-1.4075,0.15503,1.3857,-0.85175,0.78316,1.0018,0.30869,0.54256,0.23892,0.62786,-0.33375,-1.5822,-0.41364,0.17728,-1.3807,-2.3937,-1.3029,-1.3459,-1.1619,-2.3294,-0.96934,-1.8314,-0.49902,-1.6886,-1.6868,-0.29683,1.427,-2.0175,-1.6179,-0.33436,-0.64518,0.070945,-0.66149,-2.1017,0.98492,-0.46706,-0.92815,2.0036,1.8729,0.50724,-1.8573,0.022072,1.7647,0.00078807,0.77088,-0.76876,-1.8378,1.3853,0.24702,-0.67883,-1.335,0.93443,-1.1123,-0.74585,-1.3271,0.17493,-1.4559,-0.24543,1.5531,-0.1402,0.82336,-0.19624,-2.6539,1.5769,-0.41468,-0.49213,-1.6734,-0.50706,0.95692,-0.84247,-0.46787,-1.5221,-0.73102,0.81074,1.1159,0.14948,1.4867,0.83846,0.27448,0.84641,-1.3441,-0.073459,-0.39495,-2.0701,-0.99094,-0.14903,0.48182,-2.4033,-0.62274,0.72438,0.1022,0.98624,1.3668,1.6075,1.4829,-0.48982,-2.4465,-1.6882,-0.25082,-0.97408,-1.092,0.022873,-1.2948,0.033132,-0.23602,1.0295,2.0122,-0.068701,-0.18493,-0.16173,-1.202,-1.2568,-0.28714,-2.2127,-1.7532,-1.2294,-1.2627,-0.53315,0.69398,-1.7472,-0.018194,1.0085,1.0098],[1.0113,-0.51596,1.9528,1.4782,-0.93831,-0.55133,0.5862,-0.59557,0.89978,0.30149,1.1392,-0.8065,-0.6808,0.086324,0.58508,-1.0295,-2.0934,-3.4545,-2.4974,-1.3001,-0.51718,0.16261,-0.83675,-1.3559,-0.79313,-1.3432,-1.285,1.0668,2.0863,-0.77026,1.2655,-1.7212,1.0922,0.034857,0.46148,1.2725,-0.86061,-1.6415,-0.77853,-0.49255,-0.64104,-3.7916,-0.92077,0.84251,-0.04171,-0.059131,2.3551,1.5023,0.36045,0.62206,0.79237,-0.97875,0.092403,-1.0481,-0.33621,-0.56793,0.50462,-1.597,1.0429,-0.16251,0.49072,0.31109,1.5846,-1.5554,-0.047186,2.3766,1.8062,-0.40295,-0.14578,0.88831,-0.55382,0.47145,-1.8159,-2.6385,0.90112,-1.626,-0.38418,-3.7629,0.1383,0.38755,-0.88011,-0.96793,-0.053732,-1.0848,-0.58814,0.19828,-2.0485,-1.8831,-0.40434,-3.6297,-1.3901,-1.1512,-1.748,-1.4265,0.087198,-0.51395,-0.2935,0.58016,0.62034,1.4319,-0.15239,-1.7634,-1.1264,0.0996,-0.36195,1.0404,-0.94526,-0.117,-0.9062,2.5132,-0.81382,-0.66452,-1.3646,1.63,0.18701,1.7986,-0.41402,0.76281,-0.57397,-0.2597,0.36613,0.73014,-1.1643,-0.87362,0.92323,0.11249,0.87021,-0.030588,0.51055,-0.17124,1.2365,0.50277,0.24929,1.4675,-0.84028,0.55969,0.32023,0.9373,0.28572,1.0543,1.3502,1.2367,-0.25471,-0.9306,-0.8861,-0.49399,2.2033,1.7201,1.0729,2.8418,-0.80686,0.085233,0.86722,0.985,-0.052126,1.2547,0.163,0.49176,1.5526,0.84912,0.41649,1.4391,-0.33076,-2.8055,-0.76081,1.0882,0.28021,-0.91859,-0.92166,2.0104,-1.0808,-1.2606,2.3298,1.5732,0.057264,-2.9818,-0.19038,-1.2725,-2.1891,-0.93517,0.52045,-0.7563,-1.6626,-1.5573,-0.85523,-2.2067,-1.9254,-1.1812,-0.38529,-1.5791,0.16003,0.18352],[0.76914,1.4536,-3.0152,-2.9963,-0.28523,1.9102,-0.026265,-2.0382,0.40408,-1.7485,-0.52715,0.61294,1.9466,1.0961,2.9404,2.8814,-0.83048,1.176,-0.7423,-2.2836,-1.2036,-0.34604,-2.9702,-2.0081,-0.63369,0.7171,-1.9742,-0.67871,-2.062,-0.091768,2.9998,3.8997,-0.48631,1.7869,1.41,1.2829,1.1003,0.92238,-0.20473,-0.53568,-2.0195,-2.0844,0.44134,-1.0705,-1.471,0.11603,3.3524,1.5748,0.47244,0.95716,0.032171,-2.1306,2.3776,0.43165,-0.57506,1.9601,2.8056,1.0977,1.4866,0.94296,0.86185,4.0119,0.79099,0.5853,-1.553,-0.0031137,-0.031472,-2.0417,-0.96157,-1.9135,-1.1834,-0.64211,0.28622,-0.069066,0.062268,0.10646,1.1226,2.2706,0.85659,0.27002,0.010748,-0.48204,-1.1126,-1.6349,2.9847,0.29744,-1.7327,0.16989,-1.723,-1.6376,-0.6862,0.20969,-1.3383,0.28475,-0.78141,2.2401,0.18093,-1.4768,-2.6041,-1.1546,-0.42497,-0.2393,-0.46421,-1.1038,-0.94832,-1.767,1.3028,0.49735,0.80816,-1.0647,-3.8275,-2.0115,-0.89015,0.017956,-0.03706,-2.3748,0.098909,-1.2475,-0.72327,-0.55503,1.5957,0.1364,-0.10174,1.6234,2.2727,1.2194,0.26775,0.94568,0.4309,0.31468,-1.306,-2.0967,0.054041,1.7138,2.6132,0.60669,-0.46603,-2.3809,-0.83864,0.0040498,-3.5154,-1.218,-1.9585,-1.1634,0.68577,-1.1309,-0.77935,-0.16531,0.67052,1.5743,0.17334,-0.44998,1.3685,0.63969,-0.60424,-0.74852,-2.7044,1.295,2.3323,1.1519,-2.2391,-2.1563,1.3454,-1.124,1.674,2.2857,2.6481,0.96369,0.63069,-1.4279,1.8116,1.6609,1.3924,-2.0196,0.46467,0.0047914,0.69883,0.59772,1.394,-0.72779,2.584,1.6158,-0.68944,-0.67258,1.743,1.3751,-0.48371,-1.9657,-0.16699,0.90308,0.65344,1.4107],[-1.0474,-2.0948,0.16034,1.0736,-0.066314,-1.7849,-1.0626,0.65395,0.82895,-1.4965,1.2133,0.3818,-1.2931,-2.8065,-2.6838,-1.4663,2.5968,-0.60142,-5.3895,-4.3372,-0.47032,0.27968,0.39977,-0.12116,-1.8981,1.0956,1.3126,-0.56589,-1.8064,-0.31913,-2.3845,-2.3681,0.18995,-0.32253,-0.53832,1.0001,-3.2753,-2.6127,0.66259,-0.082614,-0.77707,-0.45079,-0.39447,0.66749,1.0605,0.19448,0.045776,-1.9527,1.2561,-0.1698,0.78484,-0.51685,0.76218,0.11582,1.1005,-0.9083,-0.63627,-0.20068,-0.22767,-0.28879,0.14244,3.5307,2.5951,1.8658,-3.7267,0.3997,0.42479,0.58208,-3.0177,0.68994,-0.34018,-1.129,-1.8593,0.068945,0.90826,0.010036,-0.11561,0.64925,1.1514,-0.097179,-0.98733,0.48746,0.37113,-3.7453,1.779,-0.11136,-0.30875,-1.8407,0.69304,0.20825,-0.019435,-1.4489,2.4688,1.1502,-1.418,-2.7845,-0.030774,2.3646,1.4401,2.2903,0.77679,2.1524,2.4189,1.6578,0.029239,0.91391,-2.7681,0.8977,0.55923,0.58535,0.12644,1.6632,-0.61874,-0.69295,-1.3056,-1.8199,0.32983,-0.54044,0.24065,1.4877,-1.9149,-2.5855,-2.3126,-1.7195,-2.6175,-1.8649,-0.10873,-1.3274,0.61543,1.8281,-1.2733,-3.0985,-0.54914,2.4313,-0.28027,-1.0607,1.9459,0.67322,-1.9545,-0.81213,1.7211,1.4395,0.14963,-1.2585,1.2734,-1.8562,-0.24128,-1.3186,0.49608,0.67904,-0.69069,-1.1128,-0.42992,-0.1832,-0.045866,-2.725,2.1265,1.9386,-0.65271,-2.078,0.21208,1.432,1.2361,-0.36072,2.7697,1.3738,-1.6734,1.3795,2.0272,-0.40685,-2.8655,1.334,1.2762,-1.3663,-0.36045,2.8562,2.4262,1.8451,-0.46029,-0.12217,3.329,1.2736,0.83271,1.8781,1.6802,1.5708,1.6326,0.13698,2.1554,2.1683,2.1679,0.91177],[-0.20488,-0.17429,1.232,0.10621,-0.31658,-0.19945,0.06043,-1.1563,-0.95061,0.56533,-0.038054,0.41822,0.14121,0.70279,0.040842,-0.31396,0.24349,-3.959,-1.949,-0.50324,-0.48814,-0.47228,0.56161,0.30209,-0.043868,1.14,0.99266,1.1405,0.58101,0.56392,0.66242,0.83274,-0.05188,-1.9789,-2.4192,-4.0639,0.77885,1.5094,0.091524,-1.3252,2.8141,3.0364,0.92739,1.5769,-2.4481,-1.9089,0.15248,0.86279,0.72884,-0.060434,-0.097936,-1.4657,-1.99,-0.078862,-0.23126,-0.54552,-0.29751,-1.0182,-1.0055,0.018451,-1.2136,-0.75725,-2.4146,-3.0068,2.1497,1.2183,0.66598,1.6953,2.277,-0.77631,0.54011,0.023905,-1.1466,-2.1792,-1.2585,-0.23078,-0.53872,-3.1053,-2.7515,-1.8704,-1.4207,-0.61766,-1.0396,-0.69849,-1.5634,0.31831,-0.77372,-0.84403,-0.49195,2.7696,3.5377,2.0892,0.4415,0.073655,0.38839,0.11038,0.40121,3.2524,2.7346,3.8131,2.0071,-0.42735,-0.10195,-0.54272,-1.4177,-0.90177,0.56184,-0.29091,-0.016748,0.93158,1.9282,1.1723,-0.23373,-0.94666,-1.3531,1.6181,-0.66679,-0.18674,0.46111,0.81936,0.9214,-1.5426,1.6484,0.45516,0.073048,0.7185,0.72169,-1.1262,-0.32772,-0.95639,-0.43173,-0.26513,1.915,-0.45523,-2.4121,-0.093301,-0.094805,-0.076084,0.60212,1.4597,-2.1911,-0.69968,-0.72433,-0.72932,-3.2126,-3.0007,-2.0117,-0.32727,0.66582,-1.1804,0.36609,-0.57408,0.80189,0.30316,1.076,-0.166,1.6301,-1.3039,-1.3681,0.69187,1.965,2.7583,1.8267,-1.6527,-0.78001,0.81655,-0.33317,-1.0216,-0.11174,-3.0641,1.5484,-1.6167,1.0039,-0.17139,0.48401,-1.8708,-0.7121,-4.5175,-2.598,-1.9626,-0.84624,-0.49038,-0.8715,0.35114,-0.33859,-0.63011,-1.302,0.88212,0.24609,-0.64395,-1.6432,0.22606],[1.7844,-0.14805,-0.97978,0.030404,-0.72345,0.3634,-1.866,-1.6433,-0.41863,0.22487,-0.3674,-0.0029296,-0.51915,0.39941,0.32739,-0.83145,-4.3001,-0.90749,2.3083,3.2553,-1.1738,0.11783,0.62656,2.4585,0.68223,0.25079,-1.6753,-0.54621,1.0187,0.26427,-1.596,-1.678,-0.52478,0.27656,1.4016,-1.6454,2.9876,0.13654,-0.20389,1.7002,0.50331,0.012683,1.2362,1.6852,0.050042,-1.0507,-0.97762,0.41624,-1.6819,0.63853,0.87564,0.00042636,-1.0405,0.34393,-1.1171,0.9954,-0.49955,-2.1471,0.08868,0.89444,2.4857,2.3036,1.004,0.4595,0.64372,-0.001214,-0.25205,-2.1381,0.11266,-1.9605,-1.3729,-1.2263,-0.96345,-0.70142,0.41601,-1.1433,-0.5584,1.9185,1.44,-0.64583,-2.4544,0.58961,2.3397,3.0553,1.0587,0.088812,0.24848,3.3887,2.0654,1.3243,-0.98661,-0.74551,1.3289,0.36929,-1.0952,-2.4635,0.2768,-3.5948,-2.2726,-0.53491,-0.42571,-5.1195,-5.8915,-5.4333,-1.9058,-1.4878,-0.8634,-2.3112,1.7656,0.87034,0.022936,0.11828,-1.075,0.9498,0.63228,2.0954,-1.9167,-1.4102,-0.48876,-2.1459,0.1879,-2.9092,-2.9956,-3.2796,-0.061274,-0.62371,-0.68138,-1.7206,0.24097,0.097433,1.8947,2.5884,0.83516,-1.3584,-2.1466,-1.6876,0.84949,-0.21975,0.71142,0.17376,2.0791,-0.21208,1.0138,0.2289,-2.1219,0.70587,1.6948,-0.66244,0.50303,0.0883,-0.11666,0.55975,0.96248,0.31875,0.77002,-0.55302,0.64436,0.714,1.3027,-0.26131,-0.57347,-0.60592,-1.7419,-0.87861,-0.90987,-1.6588,-1.5174,-0.38075,2.0372,1.0915,1.0407,-0.204,-0.15011,2.1391,1.4701,1.4942,-2.0649,-1.4766,-0.14548,1.4509,0.45921,-0.67686,0.9938,-0.14947,2.6034,-0.17359,-0.31293,0.82837,2.9606,2.051,0.59739,1.1835],[-1.0775,0.18993,1.0547,-0.12219,0.45639,0.47149,0.79995,0.087035,0.69867,0.044221,-0.67998,-1.3785,0.76077,-0.58081,0.13355,-0.24413,-1.4121,-1.9482,-1.3367,-0.088351,-1.1813,0.69833,1.9338,-0.35029,-0.83583,0.087315,1.7974,-1.5044,1.1862,0.82293,0.13246,-0.91223,-1.229,-1.2953,-1.4866,-0.36944,-2.1941,-1.6688,0.35426,2.4635,-2.4371,0.0089595,-0.050964,-1.5386,0.34439,0.5187,0.78406,-0.11722,-1.523,-0.5638,0.34571,0.8897,-0.92899,1.3274,1.5649,0.59587,-1.7018,-0.19814,-0.38641,0.088513,-1.8695,-1.54,0.68159,1.6024,1.2513,1.7983,-0.85186,-2.8135,2.1559,1.6358,-1.7343,0.20456,-0.34623,1.4285,-0.52365,-0.39454,-0.86413,0.099924,0.94185,-0.10563,-1.1834,-1.2463,-0.21436,-0.50167,-1.7739,-0.39794,0.48128,1.0521,-3.8477,-1.5884,-0.53865,-2.3529,-0.61307,-0.24498,0.33694,-0.20442,-0.72273,-0.26834,0.91529,-0.83992,-1.1096,0.26377,0.14424,-1.6471,-0.3121,0.45657,-0.19939,0.088576,0.092598,-0.35035,-0.86392,-0.59521,-0.062339,0.4566,1.9408,0.11242,0.84023,1.1396,0.55864,0.61591,-0.65962,0.46851,-0.74272,-0.084442,-1.0321,0.41478,0.55088,1.4437,-1.9517,0.050062,2.5325,1.1039,-0.51683,-0.76862,1.6997,1.042,-2.1181,-0.6927,-0.048853,-2.1074,-2.6321,-0.52454,-0.77758,-0.21562,0.28702,-0.22034,0.10105,1.1564,-0.10299,1.1452,-0.43899,1.1812,-2.5889,-0.10231,-1.0697,-1.4649,-1.0462,-0.38976,0.012211,-1.3958,0.44336,-1.9616,-3.6292,-0.5184,0.68852,1.6917,-0.36489,-0.31207,-0.52627,1.6478,0.13844,2.1299,-0.51157,-0.60669,-1.3405,1.9995,-1.0513,-1.3613,-0.72016,0.2739,-0.80792,-0.61924,1.9685,1.9697,-2.2503,-0.032965,0.54424,1.7092,-1.1513,0.054202,1.2914,0.23293],[-0.9044,-1.0871,-0.66407,0.19978,-2.2082,1.7177,-0.91941,-0.52518,-0.20407,2.3942,-0.53448,-0.70905,0.97803,2.1285,-1.2862,-1.326,-0.1538,1.1928,-0.72305,-1.4806,1.0935,-0.27665,0.49352,-0.29648,1.746,-2.9519,1.0251,0.060755,-0.78533,-1.4692,-0.88549,-2.0612,2.1079,1.4977,1.4762,0.80757,0.31954,-3.0228,-0.39355,0.54284,-0.88674,-3.3444,0.27718,1.4882,-2.239,-2.1846,-1.7025,-2.2024,-1.0562,0.97976,1.0434,0.089326,-1.5247,-0.5252,-2.281,-0.26398,1.3021,-0.89015,0.2707,1.3348,0.55972,-3.8287,-1.7685,-1.8384,-1.4635,-1.4732,-1.2006,-0.85165,-1.6635,-1.7161,-1.5054,-1.4863,-1.1529,-0.21028,2.1551,-0.15591,-1.0236,-3.9668,-1.5662,-1.3732,3.1128,1.4613,1.5253,0.048497,1.4282,-0.82513,0.19568,0.34154,-0.67353,-3.6079,0.94262,1.6842,-1.9993,-2.1243,1.3917,-0.094592,-1.9033,-2.5021,2.1466,1.7843,-1.1908,-0.70482,-1.031,0.90581,1.2631,1.2696,0.50188,1.3875,0.097561,1.1296,0.93651,0.62006,-1.2525,-3.8525,-0.12477,-0.23829,-0.1706,0.54546,-3.1638,-0.27716,0.10275,-0.12713,1.8539,0.45781,-1.0612,-0.84375,0.46708,1.2823,-1.1113,1.2624,0.21551,0.39842,0.65818,0.041488,-1.3787,-0.21157,1.4546,-0.20694,2.1093,0.06367,2.5449,0.74337,1.3122,0.56277,-0.87007,2.7999,1.6372,2.3939,1.2356,-0.88891,-0.5352,0.78233,0.22469,0.80387,2.2152,-0.75282,1.6145,-1.9169,-0.84705,0.90083,1.417,1.538,-0.89934,0.93816,1.7175,1.1351,0.96059,0.33906,2.6717,1.3256,1.7493,-0.4963,0.61375,0.028611,-1.6149,-2.6783,-0.79657,0.078173,1.2631,1.7449,-0.012078,-0.44671,-1.2547,0.77941,1.3165,-1.4595,-0.18614,0.59509,-0.14434,-2.0322,-2.0405,-2.2775],[0.043688,-0.59651,-0.76544,-0.54999,-0.76795,-2.5709,-1.6898,0.40638,-1.1592,-0.33547,-2.0085,-1.4518,4.7734,3.551,-1.279,-1.9342,-0.78226,1.716,0.1348,-0.50005,1.2938,1.1905,-0.53314,-0.13168,1.4265,2.4614,2.2224,3.11,0.094922,-1.1572,-3.3564,-2.1791,-0.52163,0.68217,-0.48972,-0.45198,2.3634,1.6521,0.32588,-2.029,-0.039425,2.8938,0.41818,1.0147,-0.42028,-0.6641,-0.27297,-1.5593,-1.3039,-1.9084,-1.0269,-1.4745,-3.0685,-2.4757,1.5093,-0.23571,-1.2042,0.0081278,3.6193,-0.52238,-3.3297,-1.6809,1.5082,1.6203,-1.0074,0.27987,1.0187,-0.61213,-0.74928,0.75939,1.0133,-0.77942,0.47735,0.50084,3.7893,0.48762,0.64927,2.1927,3.0377,0.033897,-0.28077,-1.732,-0.51285,-0.030182,-2.6111,-1.2547,-1.0888,-0.016678,-1.4219,-1.9829,2.1703,0.17336,-1.6066,-1.1212,-1.5223,-1.8083,-0.20523,0.12406,-0.60983,0.12931,-0.72827,1.9634,1.457,4.4944,0.84869,0.31998,-0.82293,-1.1036,-0.66641,-0.8331,-1.6464,0.28725,0.00021574,-0.089929,-0.20554,-0.69961,-0.77209,-1.706,2.0554,2.375,1.3417,3.1272,1.8476,0.20964,1.3837,0.33544,-2.081,-1.2518,0.67174,-0.51545,-2.0229,-0.095124,-0.86702,-1.3562,-2.3638,-1.4031,-1.3679,-1.0582,-0.054755,-0.65492,-2.8227,-3.8573,0.93482,1.2034,0.45997,-0.52469,0.26975,-2.0247,-1.527,-1.5813,-1.8079,-1.762,2.0913,-0.37387,-2.619,-0.93142,-1.1215,-0.70866,-1.2462,-1.2875,-0.67522,-1.5534,-0.2567,-1.2732,-2.9096,-1.7961,0.18512,0.78894,-4.2347,0.1434,1.0958,-2.299,-0.51271,-1.2752,-1.4205,0.77513,0.19944,2.0674,0.44273,1.6258,0.73576,1.0337,1.2271,1.071,0.51329,-0.65136,1.5213,1.0641,-0.87806,-1.2546,-0.019506,1.4847],[0.70978,-0.9534,0.25026,1.5297,1.1129,-0.07704,0.52144,0.41285,-0.38384,-3.2707,1.3356,-1.1099,-2.0602,-2.237,2.4609,-1.2388,-0.98347,6.499,1.544,-1.443,-0.041868,-0.6594,-1.8959,-4.5991,1.6868,2.7365,-1.4479,-1.5933,1.9684,0.50829,0.43658,0.24477,-2.7633,1.0348,1.7931,3.3898,0.37366,-0.60599,1.5141,-1.0265,1.6631,-1.234,-3.152,-3.6269,-0.60183,-1.2717,-2.1193,0.9795,0.33382,0.64899,0.79604,-0.7464,-3.3279,-1.0858,1.8214,-0.67137,-0.30131,1.8299,0.34413,1.693,1.5603,0.21487,-0.20047,-2.1419,1.2427,0.35328,1.542,-1.0786,2.1286,2.5771,0.94123,1.0866,1.1026,0.84031,-3.7469,0.86127,0.4887,-0.93876,-4.1131,-1.9315,-1.6899,-1.8049,-1.7028,-0.33574,1.2448,2.1571,0.37418,-0.59148,0.2684,1.6205,-1.0719,-2.3935,2.228,2.0473,-2.3288,-1.9211,0.21302,-1.0783,-2.6034,-3.2801,0.52339,0.98269,0.57583,0.75761,-0.050662,0.26588,1.508,-0.19485,-0.40177,1.252,2.0106,-0.25258,0.57268,2.0994,1.4219,-0.96623,0.57378,-0.4934,3.4069,0.75455,-4.2811,0.011461,-1.4989,1.4445,-2.1901,-2.5582,-1.2895,-0.19238,-0.66012,-0.85662,0.95023,-1.2983,-0.56595,0.376,0.63208,-1.1758,-1.9888,-0.58298,0.36609,-1.0649,1.0666,0.78836,-0.28675,-1.196,0.70197,1.7143,-0.4104,-1.2403,-2.751,-1.8556,-0.18362,0.15161,-2.513,-0.45854,-1.5342,-0.76333,0.95616,-0.72404,-1.9356,0.60555,-3.1625,-4.1701,-0.55279,1.4753,-1.4096,-1.8782,-1.0645,0.36202,-3.503,0.073666,-1.0542,-1.5849,-1.477,1.4987,1.542,-2.8248,0.79159,4.4848,2.0796,1.011,-1.746,1.176,1.6773,0.45439,-2.5811,0.36971,0.30569,-1.6138,0.80544,1.8449,-1.4317,-3.2532]],"Bias":[-0.44701,0.46866,-0.7076,-1.7207,-0.19241,-0.69351,-0.75201,-0.72347,-0.83467,-0.44128]} \ No newline at end of file