Exemple #1
0
        public void BackPropagateMaxout(MaxoutLayer layer)
        {
            var dims = ComputeBlocksTreads(layer.Outputs.Length);

            layer.PreviousLayer.Gradients.FillGpu(0f);
            Gpu.Launch(dims.Item1, dims.Item2).BackPropagateMaxoutGPU(
                layer.Outputs.Length,
                layer.InputGradients.GPUArray,
                layer.Gradients.GPUArray,
                layer.Winners.GPUArray
                );
        }
Exemple #2
0
        public MaxoutLayer AddMaxoutLayer(string id = "", int groupsize = 2)
        {
            var lastLayer = Layers.Last();

            if (lastLayer == null)
            {
                throw new Exception("There must be one or more layers in the network");
            }
            var maxoutLayer = new MaxoutLayer(_gpuModule, lastLayer, id: id, groupSize: groupsize);

            Layers.Add(maxoutLayer);
            return(maxoutLayer);
        }
Exemple #3
0
        public void CalculateMaxout(MaxoutLayer layer)
        {
            var dims = ComputeBlocksTreads(layer.Outputs.Length);

            Gpu.Launch(dims.Item1, dims.Item2).CalculateMaxoutGPU(
                layer.Inputs.GPUArray,
                layer.Outputs.GPUArray,
                layer.Winners.GPUArray,
                layer.Outputs.Length,
                layer.GroupSize
                );
            layer.Winners.CopyToHost();
        }
Exemple #4
0
 public void BackPropagateMaxout(MaxoutLayer layer)
 {
     var dims = ComputeBlocksTreads(layer.Outputs.Length);
     layer.PreviousLayer.Gradients.FillGpu(0f);
     Gpu.Launch(dims.Item1, dims.Item2).BackPropagateMaxoutGPU(
        layer.Outputs.Length,
        layer.InputGradients.GPUArray,
        layer.Gradients.GPUArray,
        layer.Winners.GPUArray
     );
 }
Exemple #5
0
 public void CalculateMaxout(MaxoutLayer layer)
 {
     var dims = ComputeBlocksTreads(layer.Outputs.Length);
     Gpu.Launch(dims.Item1, dims.Item2).CalculateMaxoutGPU(
        layer.Inputs.GPUArray,
        layer.Outputs.GPUArray,
        layer.Winners.GPUArray,
        layer.Outputs.Length,
        layer.GroupSize
     );
     layer.Winners.CopyToHost();
 }
Exemple #6
0
 public MaxoutLayer AddMaxoutLayer(string id = "", int groupsize = 2)
 {
     var lastLayer = Layers.Last();
     if (lastLayer == null) throw new Exception("There must be one or more layers in the network");
     var maxoutLayer = new MaxoutLayer(_gpuModule, lastLayer, id: id, groupSize: groupsize);
     Layers.Add(maxoutLayer);
     return maxoutLayer;
 }