class_docstr: The pooling layer that takes average over a window 
  for three-dimensional images.
  
  :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, tuple(object, int)
  :param filter_size: The size of the window: (height, width, depth).     
  :type filter_size: tuple(int, int, int), default=(3, 3, 3)
  :param stride_size: Window stride (vertical, horizontal, depth).  
  :type stride_size: tuple(int, int, int), default=(1, 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** - the images' 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** can be calculated from the input as (**Depth** - **FilterDepth**)/**StrideDepth** + 1
      - **Channels** is equal to the input **Channels**
class_docstr_tok: ["The","pooling","layer","that","takes","average","over","a","window","for","three-dimensional","images",".",":","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",",","tuple","(","object",",","int",")",":","param","filter_size",":","The","size","of","the","window",":","(","height",",","width",",","depth",")",".",":","type","filter_size",":","tuple","(","int",",","int",",","int",")",",","default=","(","3",",","3",",","3",")",":","param","stride_size",":","Window","stride","(","vertical",",","horizontal",",","depth",")",".",":","type","stride_size",":","tuple","(","int",",","int",",","int",")",",","default=","(","1",",","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","*","*","-","the","images","'","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","*","*","can","be","calculated","from","the","input","as","(","*","*","Depth","*","*","-","*","*","FilterDepth","*","*",")","\/","*","*","StrideDepth","*","*","+","1","-","*","*","Channels","*","*","is","equal","to","the","input","*","*","Channels","*","*"]
code: def __init__(
      self,
      input_layers,
      filter_size=(3, 3, 3),
      stride_size=(1, 1, 1),
      name=None,
  ):
      if type(input_layers) is PythonWrapper.MeanPooling3D:
          super().__init__(input_layers)
          return
  
      layers, outputs = check_input_layers(input_layers, 1)
  
      if len(filter_size) != 3:
          raise ValueError(
              "`filter_size` must contain three values (h, w, d)."
          )
  
      if len(stride_size) != 3:
          raise ValueError(
              "`stride_size` must contain three values (h, w, d)."
          )
  
      internal = PythonWrapper.MeanPooling3D(
          str(name),
          layers[0],
          outputs[0],
          int(filter_size[0]),
          int(filter_size[1]),
          int(filter_size[2]),
          int(stride_size[0]),
          int(stride_size[1]),
          int(stride_size[2]),
      )
      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 MeanPooling3D object from inherited base classes: Pooling3D with example: obj = MeanPooling3D(input_layers, filter_size, stride_size, name)