class_docstr: Average pooling operation for spatial data.
  Arguments:
      pool_size: integer or tuple of 2 integers,
          factors by which to downscale (vertical, horizontal).
          (2, 2) will halve the input in both spatial dimension.
          If only one integer is specified, the same window length
          will be used for both dimensions.
      strides: Integer, tuple of 2 integers, or None.
          Strides values.
          If None, it will default to `pool_size`.
      padding: One of `"valid"` or `"same"` (case-insensitive).
      data_format: A string,
          one of `channels_last` (default) or `channels_first`.
          The ordering of the dimensions in the inputs.
          `channels_last` corresponds to inputs with shape
          `(batch, height, width, channels)` while `channels_first`
          corresponds to inputs with shape
          `(batch, channels, height, width)`.
  Input shape:
      - If `data_format='channels_last'`:
          4D tensor with shape:
          `(batch_size, rows, cols, channels)`
      - If `data_format='channels_first'`:
          4D tensor with shape:
          `(batch_size, channels, rows, cols)`
  Output shape:
      - If `data_format='channels_last'`:
          4D tensor with shape:
          `(batch_size, pooled_rows, pooled_cols, channels)`
      - If `data_format='channels_first'`:
          4D tensor with shape:
          `(batch_size, channels, pooled_rows, pooled_cols)`
class_docstr_tok: ["Average","pooling","operation","for","spatial","data",".","Arguments",":","pool_size",":","integer","or","tuple","of","2","integers",",","factors","by","which","to","downscale","(","vertical",",","horizontal",")",".","(","2",",","2",")","will","halve","the","input","in","both","spatial","dimension",".","If","only","one","integer","is","specified",",","the","same","window","length","will","be","used","for","both","dimensions",".","strides",":","Integer",",","tuple","of","2","integers",",","or","None",".","Strides","values",".","If","None",",","it","will","default","to","`","pool_size","`",".","padding",":","One","of","`","``","valid","''","`","or","`","``","same","''","`","(","case-insensitive",")",".","data_format",":","A","string",",","one","of","`","channels_last","`","(","default",")","or","`","channels_first","`",".","The","ordering","of","the","dimensions","in","the","inputs",".","`","channels_last","`","corresponds","to","inputs","with","shape","`","(","batch",",","height",",","width",",","channels",")","`","while","`","channels_first","`","corresponds","to","inputs","with","shape","`","(","batch",",","channels",",","height",",","width",")","`",".","Input","shape",":","-","If","`","data_format='channels_last","'","`",":","4D","tensor","with","shape",":","`","(","batch_size",",","rows",",","cols",",","channels",")","`","-","If","`","data_format='channels_first","'","`",":","4D","tensor","with","shape",":","`","(","batch_size",",","channels",",","rows",",","cols",")","`","Output","shape",":","-","If","`","data_format='channels_last","'","`",":","4D","tensor","with","shape",":","`","(","batch_size",",","pooled_rows",",","pooled_cols",",","channels",")","`","-","If","`","data_format='channels_first","'","`",":","4D","tensor","with","shape",":","`","(","batch_size",",","channels",",","pooled_rows",",","pooled_cols",")","`"]
code: def call(self, inputs):
      self._layer_input = inputs
  
      if self.data_format != "channels_first":
          inputs = tfe.transpose(inputs, perm=[0, 3, 1, 2])
  
      outputs = tfe.avgpool2d(
          inputs, self.pool_size, self.strides, self.padding
      )
  
      if self.data_format != "channels_first":
          outputs = tfe.transpose(outputs, perm=[0, 2, 3, 1])
  
      self._layer_output = outputs
  
      return outputs
  
imports: import math
  from abc import abstractmethod
  from tensorflow.python.keras.utils import conv_utils
  import tf_encrypted
  from tf_encrypted.keras.engine import Layer
label_desc: Use image node_id 2 for calling the AveragePooling2D obj's underlying member method code with example usage: obj.call(inputs) and returns: outputs