class_docstr: A visitor that inspects the graph and removes redundant merge nodes.
  
  This visitor removes the redundant flatten and packed merge nodes added
  by the _PackMergeCombineVisitor and reconstructs the descendants of the
  removed nodes with the final flatten and packed merge node.
class_docstr_tok: ["A","visitor","that","inspects","the","graph","and","removes","redundant","merge","nodes",".","This","visitor","removes","the","redundant","flatten","and","packed","merge","nodes","added","by","the","_PackMergeCombineVisitor","and","reconstructs","the","descendants","of","the","removed","nodes","with","the","final","flatten","and","packed","merge","node","."]
code: def _get_redundant_and_non_redundant_input_values(self, input_values):
      redundant_values, non_redundant_values = [], []
      for value in input_values:
          assert isinstance(
              value.parent_operation.operation_def,
              beam_nodes.CreateTensorBinding,
          )
          # If it's from a packed combine node, this is a redundant value.
          if self._is_packed_post_processing_node(value):
              redundant_values.append(value)
          else:
              non_redundant_values.append(value)
      return redundant_values, non_redundant_values
  
imports: import collections
  import dataclasses
  from typing import Sequence
  from tensorflow_transform import analyzer_nodes
  from tensorflow_transform import nodes
  from tensorflow_transform.beam import beam_nodes
label_desc: Use image node_id 5 for calling the _RemoveRedundantPackedMergeCombineVisitor obj's underlying member method code with example usage: obj._get_redundant_and_non_redundant_input_values(input_values) and returns: redundant_values,  non_redundant_values