class_docstr: for some special op that masks will not change when execute
  1. for getitem op, it's no need to calc masks. do in fast path to run the algorithm faster.
  2. for (softmax, log_softmax) ops, the default process will get a wrong mask. actually we should just copy the mask from input to
      output.
class_docstr_tok: ["for","some","special","op","that","masks","will","not","change","when","execute","1.","for","getitem","op",",","it","'s","no","need","to","calc","masks",".","do","in","fast","path","to","run","the","algorithm","faster",".","2.","for","(","softmax",",","log_softmax",")","ops",",","the","default","process","will","get","a","wrong","mask",".","actually","we","should","just","copy","the","mask","from","input","to","output","."]
code: def __init__(
      self,
      customized_no_change_act_module: Tuple | None = None,
      customized_no_change_act_func: Tuple | None = None,
  ):
      self.no_change_act_module = (
          no_change_act_module
          if not customized_no_change_act_module
          else (no_change_act_module + customized_no_change_act_module)
      )
      self.no_change_act_func = (
          no_change_act_func
          if not customized_no_change_act_func
          else (no_change_act_func + customized_no_change_act_func)
      )
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Tuple
  import operator
  import torch
  from torch.nn import functional
  from torch.fx.node import Node
  from torch.utils._pytree import tree_flatten, tree_unflatten
  from .utils import randomize_tensor_inplace, randomize_if_tensor, tree_map_zip, torch_float_dtype, poss_deepcopy
label_desc: Use image node_id 1 to create a new NoChangeMaskUpdater object from inherited base classes: DefaultMaskUpdater with example: obj = NoChangeMaskUpdater(customized_no_change_act_module, customized_no_change_act_func)