class_docstr: Task class for text Match.
class_docstr_tok: ["Task","class","for","text","Match","."]
docstr: Get shapes for feature.
docstr_tok: ["Get","shapes","for","feature","."]
code: def feature_spec(self):
      """Get shapes for feature."""
      feature_shapes = [
          (
              tf.TensorShape([self.max_seq_len]),
              tf.TensorShape([self.max_seq_len]),
          )
      ]
      if not self.infer_without_label:
          feature_shapes.append(tf.TensorShape([self.num_classes]))
  
      feature_shapes = [
          tuple(feature_shapes),
          (tf.TensorShape([]), tf.TensorShape([])),
      ]
  
      if len(feature_shapes) == 1:
          return feature_shapes[0]
  
      return tuple(feature_shapes)
  
file_path: delta/delta/data/task/text_match_task.py
imports: import collections
  from absl import logging
  import delta.compat
  from delta.data.task.base_text_task import TextTask
  from delta.data.utils.common_utils import get_file_len
  from delta.data.preprocess.text_ops import load_textline_dataset
  from delta.data.preprocess.utils import load_vocab_dict
  from delta.data.preprocess.text_ops import process_one_label_dataset
  from delta.utils.register import registers
  from delta.layers.utils import compute_sen_lens
  from delta import utils
label_desc: Use image node_id 3 for calling the TextMatchTask obj's underlying member method code with example usage: obj.feature_spec() and returns: tuple, feature_shapes