예제 #1
0
        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);
        }
예제 #2
0
        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;
        }
예제 #3
0
        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);
        }
예제 #4
0
        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();
        }
예제 #5
0
        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();
        }