public override void ComputeOutput()
        {
            FilteredImageChannel[] channels = new FilteredImageChannel[FilterNumber];
            FilteredImage          img      = (FilteredImage)PreviousLayer.GetData();

            bool samePadding = (Padding == "same") ? true : false;


            Task[] tasks = new Task[FilterNumber];

            for (int i = 0; i < FilterNumber; i++)
            {
                int taski = 0 + i;

                tasks[taski] = Task.Run(() =>
                {
                    channels[taski] = Filters[taski].Convolve(img, samePadding);
                });
            }

            Task.WaitAll(tasks);



            //for (int i = 0; i < FilterNumber; i++)
            //{
            //    channels[i] = Filters[i].Convolve(img, samePadding);
            //}

            OutputBeforeActivation = new FilteredImage(FilterNumber, channels);
            OutputImage            = ActivationFunction.Activate(OutputBeforeActivation);
        }
        public Array3D FormOutput(Array3D input)
        {
            var output = new Array3D(Neurals.Count);

            for (var i = 0; i < output.Count; i++)
            {
                var summ = Neurals[i].FormOutput(input);
                output[i] = ActivationFunction.Activate(summ);
            }

            return(output);
        }
        private void Convolution(Array3D input, Array3D ouput)
        {
            foreach (var filter in Neurals)
            {
                var result = new Array2D(ouput.Height, ouput.Width);

                for (var i = 0; i <= input.Height - filter.Weights.Height; i += Stride)
                {
                    for (var j = 0; j <= input.Width - filter.Weights.Width; j += Stride)
                    {
                        var output = Array3D.Merge(input, filter.Weights, i, j) + filter.Bias;
                        result[i / Stride, j / Stride] = ActivationFunction.Activate(output);
                    }
                }

                ouput.Insert(result);
            }
        }
Beispiel #4
0
        public override void ComputeOutput()
        {
            FlattenedImage previous = (FlattenedImage)PreviousLayer.GetData();

            Task[] tasks = new Task[NumberOfUnits];

            for (int i = 0; i < NumberOfUnits; i++)
            {
                int taski = 0 + i;

                tasks[taski] = Task.Run(() =>
                {
                    Output.Values[taski] = Units[taski].ComputeOutput(previous);
                });
            }

            Task.WaitAll(tasks);

            Output = ActivationFunction.Activate(Output);
        }
Beispiel #5
0
 public MatrixFloat Activate()
 {
     return((Neurons + _bias).Apply((x) => ActivationFunction.Activate(x)));
 }
        public Array3D FormOutput(Array3D input)
        {
            var output = ActivationFunction.Activate(input);

            return(output);
        }