class_docstr: Squeeze-and-excitation layer.
class_docstr_tok: ["Squeeze-and-excitation","layer","."]
code: def call(self, inputs):
      h_axis, w_axis = (
          [2, 3] if self._data_format == "channels_first" else [1, 2]
      )
      if self._local_pooling:
          se_tensor = tf.nn.avg_pool(
              inputs,
              ksize=[1, inputs.shape[h_axis], inputs.shape[w_axis], 1],
              strides=[1, 1, 1, 1],
              padding="VALID",
          )
      else:
          se_tensor = tf.reduce_mean(
              inputs, [h_axis, w_axis], keepdims=True
          )
      se_tensor = self._se_expand(
          self._relu_fn(self._se_reduce(se_tensor))
      )
      logging.info("Built SE %s : %s", self.name, se_tensor.shape)
      return tf.sigmoid(se_tensor) * inputs
  
imports: import collections
  import itertools
  import math
  from absl import logging
  import numpy
  import six
  from six.moves import xrange
  import tensorflow
  import utils
label_desc: Use image node_id 2 for calling the SE obj's underlying member method code with example usage: obj.call(inputs) and returns: unknown