code: def maxpool(explainer, op, *grads):
      xin0, rin0 = tf.split(op.inputs[0], 2)
      xout, rout = tf.split(op.outputs[0], 2)
      delta_in0 = xin0 - rin0
      dup0 = [2] + [1 for i in delta_in0.shape[1:]]
      cross_max = tf.maximum(xout, rout)
      diffs = tf.concat([cross_max - rout, xout - cross_max], 0)
      if op.type.startswith("shap_"):
          op.type = op.type[5:]
      xmax_pos, rmax_pos = tf.split(
          explainer.orig_grads[op.type](op, grads[0] * diffs), 2
      )
      return tf.tile(
          tf.where(
              tf.abs(delta_in0) < 1e-7,
              tf.zeros_like(delta_in0),
              (xmax_pos + rmax_pos) / delta_in0,
          ),
          dup0,
      )
  
imports: import warnings
  import numpy
  from packaging import version
  from ...utils._exceptions import DimensionError
  from .._explainer import Explainer
  from ..tf_utils import _get_graph, _get_model_inputs, _get_model_output, _get_session
  from .deep_utils import _check_additivity
label_desc: Use image node_id 6 for calling a global function with example usage: maxpool(explainer, op) and returns: tf