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 ); }
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); }
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(); }
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; }