class_docstr: This is a utility class that combines a model, a masker object, and a current input.
  
  The combination of a model, a masker object, and a current input produces a binary set
  function that can be called to mask out any set of inputs. This class attempts to be smart
  about only evaluating the model for background samples when the inputs changed (note this
  requires the masker object to have a .invariants method).
class_docstr_tok: ["This","is","a","utility","class","that","combines","a","model",",","a","masker","object",",","and","a","current","input",".","The","combination","of","a","model",",","a","masker","object",",","and","a","current","input","produces","a","binary","set","function","that","can","be","called","to","mask","out","any","set","of","inputs",".","This","class","attempts","to","be","smart","about","only","evaluating","the","model","for","background","samples","when","the","inputs","changed","(","note","this","requires","the","masker","object","to","have","a",".invariants","method",")","."]
code: def mask_shapes(self):
      if hasattr(self.masker, "mask_shapes") and callable(
          self.masker.mask_shapes
      ):
          return self.masker.mask_shapes(*self.args)
      else:
          return [a.shape for a in self.args]
  
imports: import copy
  import numpy
  import scipy.sparse
  from numba import njit
  from ..None import links
label_desc: Use image node_id 5 for calling the MaskedModel obj's underlying member method code with example usage: obj.mask_shapes() and returns: self, unknown