public void Update(NnGpuWin nnGpuWinInstance, int layerIndex) { NnGpuLayerDataGroup laterDataGroup = nnGpuWinInstance.GetLayerData(layerIndex); ImageContainer.Children.Clear(); BackwardImageContainer.Children.Clear(); NnGpuLayerData forward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward); BitmapSource imageSource = forward.ToDepthImage(); Image image = new Image(); image.Width = 25 * forward.depth; image.Height = 25; image.Stretch = Stretch.Fill; image.Source = imageSource; ImageContainer.Children.Add(image); NnGpuLayerData backward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Backward); BitmapSource backwardImageSource = backward.ToDepthImage(); Image backwardImage = new Image(); backwardImage.Width = 25 * backward.depth; backwardImage.Height = 25; backwardImage.Stretch = Stretch.Fill; backwardImage.Source = backwardImageSource; BackwardImageContainer.Children.Add(backwardImage); }
public object MarshalNativeToManaged(IntPtr obj) { NnGpuLayerDataGroup layerDataGroup = new NnGpuLayerDataGroup(); layerDataGroup.count = Marshal.ReadInt32(obj); obj += 4; layerDataGroup.type = (NnGpuLayerType)Marshal.ReadInt32(obj); layerDataGroup.layerData = new NnGpuLayerData[layerDataGroup.count]; obj += 4; for (int index = 0; index < layerDataGroup.count; index++) { NnGpuLayerData layerData = new NnGpuLayerData(); layerData.type = (NnGpuLayerDataType)Marshal.ReadInt32(obj); obj += 4; layerData.width = Marshal.ReadInt32(obj); obj += 4; layerData.height = Marshal.ReadInt32(obj); obj += 4; layerData.depth = Marshal.ReadInt32(obj); obj += 4; double[] data = new double[layerData.width * layerData.height * layerData.depth]; Marshal.Copy(obj, data, 0, layerData.width * layerData.height * layerData.depth); layerData.data = data; layerDataGroup.layerData[index] = layerData; obj += layerData.width * layerData.height * layerData.depth * 8; } return(layerDataGroup); }
public void Update(NnGpuWin nnGpuWinInstance, int layerIndex) { NnGpuLayerDataGroup laterDataGroup = nnGpuWinInstance.GetLayerData(layerIndex); NnGpuLayerData layerData = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward); BitmapSource image = layerData.ToImage(); layerInputImg.Source = image; }
public void Update(NnGpuWin nnGpuWinInstance, int layerIndex) { uint averageTimeMs = 0; double averageBytes = 0; nnGpuWinInstance.GetLayerPerformanceData(layerIndex, out averageTimeMs, out averageBytes); NnGpuLayerDataGroup laterDataGroup = nnGpuWinInstance.GetLayerData(layerIndex); BackwardSum = "Sum: " + laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Backward).Sum(); ForwardSum = "Sum: " + laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).Sum(); double largest = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).GetLargestDataValue(); double smallest = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).GetSmallestDataValue(); ImageContainer.Children.Clear(); BackwardImageContainer.Children.Clear(); NnGpuLayerData forward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward); BitmapSource imageSource = forward.ToImage(); Image image = new Image(); //image.Width = 25 * forward.depth; image.Height = 25; image.Stretch = Stretch.Fill; image.Source = imageSource; ImageContainer.Children.Add(image); NnGpuLayerData backward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Backward); BitmapSource backwardImageSource = backward.ToDepthImage(); Image backwardImage = new Image(); backwardImage.Width = 25 * backward.depth; backwardImage.Height = 25; backwardImage.Stretch = Stretch.Fill; backwardImage.Source = backwardImageSource; BackwardImageContainer.Children.Add(backwardImage); }
public void Update(NnGpuWin nnGpuWinInstance, int layerIndex) { uint averageTimeMs = 0; double averageBytes = 0; nnGpuWinInstance.GetLayerPerformanceData(layerIndex, out averageTimeMs, out averageBytes); Performance timer = new Performance(); timer.Start(); NnGpuLayerDataGroup laterDataGroup = nnGpuWinInstance.GetLayerData(layerIndex); double largest = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).GetLargestDataValue(); double smallest = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).GetSmallestDataValue(); BackwardSum = "Sum: " + laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Backward).Sum(); ForwardSum = "Sum: " + laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).Sum(); ImageContainer.Children.Clear(); FilterImageContainer.Children.Clear(); BackwardsImageContainer.Children.Clear(); NnGpuLayerData forward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward); BitmapSource imageSource = forward.ToDepthImage(); Image image = new Image(); image.Width = 25 * forward.depth; image.Height = 25; image.Stretch = Stretch.Fill; image.Source = imageSource; ImageContainer.Children.Add(image); NnGpuLayerData backward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Backward); BitmapSource backwardsImageSource = backward.ToDepthImage(); Image backwardsImage = new Image(); if (backward.depth == 1) { backwardsImage.Width = backward.width; } else { backwardsImage.Width = 25 * backward.depth; } backwardsImage.Height = 25; backwardsImage.Stretch = Stretch.Fill; backwardsImage.Source = backwardsImageSource; BackwardsImageContainer.Children.Add(backwardsImage); NnGpuLayerData[] filterLayers = laterDataGroup.GetLayersOfType(NnGpuLayerDataType.ConvForwardFilter); for (int filterIndex = 0; filterIndex < filterLayers.Length; filterIndex++) { Image filterImage = new Image(); filterImage.Width = 25; filterImage.Height = 25; filterImage.Stretch = Stretch.Fill; filterImage.Source = filterLayers[filterIndex].ToImage(); FilterImageContainer.Children.Add(filterImage); } long ms = timer.Stop(); }
public void Update(NnGpuWin nnGpuWinInstance, int layerIndex) { // TODO: NEED TO FIX THE OUTPUT. NEED TO SHOW THE AVERAGE ERRORS PER X UINTS OF TIME NnGpuLayerDataGroup laterDataGroup = nnGpuWinInstance.GetLayerData(layerIndex); double largest = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).GetLargestDataValue(); double smallest = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).GetSmallestDataValue(); double[] layerDataForward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Forward).data; double[] layerDataBackward = laterDataGroup.GetLayerOfType(NnGpuLayerDataType.Backward).data; Outputs.Insert(0, layerDataBackward); if (Outputs.Count > MaxPoints) { Outputs.RemoveAt(MaxPoints); } if (double.IsNaN(BarContainer.ActualWidth) || double.IsNaN(BarContainer.ActualHeight)) { return; } double highAve = 0; double lowAve = 0; double[] aves = new double[Outputs.Count]; for (int index = 0; index < Outputs.Count; index++) { double[] output = Outputs[index]; double ave = 0; for (int outputIndex = 0; outputIndex < output.Length; outputIndex++) { ave += output[outputIndex]; } ave /= output.Length; aves[index] = ave; if (ave > highAve) { highAve = ave; } if (ave < lowAve) { lowAve = ave; } } double scale = 1; if (System.Math.Abs(highAve) > System.Math.Abs(lowAve)) { scale = (BarContainer.Height / System.Math.Abs(highAve)) / 2; } else { scale = (BarContainer.Height / System.Math.Abs(lowAve)) / 2; } if (scale < 0.3) { scale = 0.3; } BarContainer.Children.Clear(); double xscale = this.ActualWidth / ((double)MaxPoints); Line baseline = new Line(); baseline.X1 = 0; baseline.Y1 = BarContainer.ActualHeight / 2; baseline.X2 = BarContainer.ActualWidth; baseline.Y2 = BarContainer.ActualHeight / 2; baseline.Stroke = new SolidColorBrush(Color.FromRgb(0, 0, 0)); baseline.StrokeThickness = 1; BarContainer.Children.Add(baseline); double lastPointX = 0; double lastPointY = 0; for (int index = 0; index < Outputs.Count; index++) { double dataPointX = index * xscale; double dataPointY = ((aves[index] * -1) * scale) + (BarContainer.ActualHeight / 2); if (index > 0 && !double.IsNaN(lastPointY) && !double.IsNaN(dataPointY)) { Line l = new Line(); l.X1 = lastPointX; l.Y1 = lastPointY; l.X2 = dataPointX; l.Y2 = dataPointY; l.Stroke = new SolidColorBrush(Color.FromRgb(255, 255, 255)); l.StrokeThickness = 1; BarContainer.Children.Add(l); BarContainer.Children.Add(new TextBlock() { Text = Convert.ToString(Math.Round(aves[index], 4)), Margin = new Thickness(dataPointX, dataPointY - 10, 0, 0) }); } lastPointX = dataPointX; lastPointY = dataPointY; } BarContainer.Children.Add(new TextBlock() { Text = Convert.ToString(Math.Round(highAve, 4)), Margin = new Thickness(0, 0, 0, 0) }); BarContainer.Children.Add(new TextBlock() { Text = Convert.ToString(Math.Round(lowAve, 4)), Margin = new Thickness(0, BarContainer.Height - 20, 0, 0) }); BarContainer.InvalidateArrange(); }