class_docstr: The pooling layer that takes average over the window.
  
  :param input_layers: The input layer and the number of its output. If no number
      is specified, the first output will be connected.
  :type input_layers: (object, int)
  :param filter_size: The size of the window: (height, width).    
  :type filter_size: tuple(int, int), default=(3, 3)
  :param stride_size: Window stride (vertical, horizontal).  
  :type stride_size: tuple(int, int), default=(1, 1)
  :param name: The layer name.
  :type name: str, default=None
  
  .. rubric:: Layer inputs:
  
  (1) the set of images, of dimensions:
  
      - **BatchLength** * **BatchWidth** * **ListSize** - the number of images in the set
      - **Height** - the images' height
      - **Width** - the images' width
      - **Depth** * **Channels** - the number of channels the image format uses
      
  .. rubric:: Layer outputs:
  
  (1) the result of pooling
      The dimensions:
  
      - **BatchLength**, **BatchWidth**, **ListSize** are equal to the input dimensions
      - **Height** can be calculated from the input as (**Height** - **FilterHeight**)/**StrideHeight** + 1
      - **Width** can be calculated from the input as (**Width** - **FilterWidth**)/**StrideWidth** + 1
      - **Depth** and **Channels** are equal to the input dimensions
class_docstr_tok: ["The","pooling","layer","that","takes","average","over","the","window",".",":","param","input_layers",":","The","input","layer","and","the","number","of","its","output",".","If","no","number","is","specified",",","the","first","output","will","be","connected",".",":","type","input_layers",":","(","object",",","int",")",":","param","filter_size",":","The","size","of","the","window",":","(","height",",","width",")",".",":","type","filter_size",":","tuple","(","int",",","int",")",",","default=","(","3",",","3",")",":","param","stride_size",":","Window","stride","(","vertical",",","horizontal",")",".",":","type","stride_size",":","tuple","(","int",",","int",")",",","default=","(","1",",","1",")",":","param","name",":","The","layer","name",".",":","type","name",":","str",",","default=None","..","rubric",":",":","Layer","inputs",":","(","1",")","the","set","of","images",",","of","dimensions",":","-","*","*","BatchLength","*","*","*","*","*","BatchWidth","*","*","*","*","*","ListSize","*","*","-","the","number","of","images","in","the","set","-","*","*","Height","*","*","-","the","images","'","height","-","*","*","Width","*","*","-","the","images","'","width","-","*","*","Depth","*","*","*","*","*","Channels","*","*","-","the","number","of","channels","the","image","format","uses","..","rubric",":",":","Layer","outputs",":","(","1",")","the","result","of","pooling","The","dimensions",":","-","*","*","BatchLength","*","*",",","*","*","BatchWidth","*","*",",","*","*","ListSize","*","*","are","equal","to","the","input","dimensions","-","*","*","Height","*","*","can","be","calculated","from","the","input","as","(","*","*","Height","*","*","-","*","*","FilterHeight","*","*",")","\/","*","*","StrideHeight","*","*","+","1","-","*","*","Width","*","*","can","be","calculated","from","the","input","as","(","*","*","Width","*","*","-","*","*","FilterWidth","*","*",")","\/","*","*","StrideWidth","*","*","+","1","-","*","*","Depth","*","*","and","*","*","Channels","*","*","are","equal","to","the","input","dimensions"]
code: def __init__(
      self,
      input_layers,
      filter_size=(3, 3),
      stride_size=(1, 1),
      name=None,
  ):
      if type(input_layers) is PythonWrapper.MeanPooling:
          super().__init__(input_layers)
          return
  
      layers, outputs = check_input_layers(input_layers, 1)
  
      if len(filter_size) != 2:
          raise ValueError(
              "`filter_size` must contain two values (h, w)."
          )
  
      if len(stride_size) != 2:
          raise ValueError(
              "`stride_size` must contain two values (h, w)."
          )
  
      internal = PythonWrapper.MeanPooling(
          str(name),
          layers[0],
          outputs[0],
          int(filter_size[0]),
          int(filter_size[1]),
          int(stride_size[0]),
          int(stride_size[1]),
      )
      super().__init__(internal)
  
imports: import neoml.PythonWrapper
  from .Dnn import Layer
  from neoml.Utils import check_input_layers
label_desc: Use image node_id 1 to create a new MeanPooling object from inherited base classes: Pooling with example: obj = MeanPooling(input_layers, filter_size, stride_size, name)