Exemplo n.º 1
0
        public MaxPoolLayer(IAllocator allocator, DType elementType, int batchSize, long nInputPlane, long inputWidth, long inputHeight, ConvolutionDesc2d cd, bool ceilMode = true)
        {
            this.cd       = cd;
            this.ceilMode = ceilMode;

            var inputSizes  = new long[] { batchSize, nInputPlane, inputWidth, inputHeight };
            var outputSizes = CpuMaxPoolingOps.OutputSize(inputSizes, ceilMode, cd);

            this.OutputSizes = outputSizes;

            this.activation = new NDArray(allocator, elementType, outputSizes);
            this.indices    = new NDArray(allocator, elementType, outputSizes);
            this.gradInput  = new NDArray(allocator, elementType, inputSizes);
        }
Exemplo n.º 2
0
 public override NDArray Backward(NDArray input, NDArray gradOutput, ModelMode mode)
 {
     CpuMaxPoolingOps.SpatialMaxPoolingBackward(input, gradOutput, gradInput, indices, cd, ceilMode);
     return(gradInput);
 }
Exemplo n.º 3
0
 public override NDArray Forward(NDArray input, ModelMode mode)
 {
     CpuMaxPoolingOps.SpatialMaxPoolingForward(input, activation, indices, cd, ceilMode);
     return(activation);
 }
Exemplo n.º 4
0
 public override Tensor Backward(Tensor input, Tensor gradOutput, ModelMode mode)
 {
     CpuMaxPoolingOps.SpatialMaxPoolingBackward(input, gradOutput, gradInput, indices, cd, ceilMode);
     return(gradInput);
 }