class_docstr: Abstract Layer for tensorflow_text tokenizers.
  
  Input shape:
    N-D (2D as default) tensor with shape: `(batch_size, input_length)`.
  
  Output shape:
    (N+1)-D (3D as default) tensor with shape:
      `(batch_size, input_length, token_dim)`.
code: def build(self, input_shape):
      # We have to use 'and not ==' here, because input_shape[1] !/== 1 can result
      # in None for undefined shape axes. If using 'and !=', this causes the
      # expression to evaluate to False instead of True if the shape is undefined;
      # the expression needs to evaluate to True in that case.
      if (
          (self._squeeze_token_dim)
          and (input_shape.ndims > 1)
          and (not input_shape[1] == 1)
      ):  # pylint: disable=g-comparison-negation
          raise RuntimeError(
              "`squeeze_token_dim` should be set to False if you are calling this "
              "layer on a Tensor with inner dimension not equal to 1 (got "
              "input_shape: %s)." % input_shape
          )
      super(TokenizerBase, self).build(input_shape)
  
imports: import os
  import tensorflow
  from tensorflow.python.ops import lookup_ops
  from tensorflow.python.ops.ragged import ragged_conversion_ops
  from tensorflow_text.python.ops import unicode_script_tokenizer
  from tensorflow_text.python.ops import whitespace_tokenizer
  from tensorflow_text.python.ops import wordpiece_tokenizer
label_desc: Use image node_id 2 for calling the TokenizerBase obj's underlying member method code with example usage: obj.build(input_shape) without return types