class_docstr: Base class inherited by modules that create Variables and are
  configurable through hyperparameters.
  
  A Texar module inheriting :class:`~texar.tf.ModuleBase` has following key
  features:
  
      - **Convenient variable re-use**: A module instance creates         its own sets of variables, and automatically re-uses its variables on         subsequent calls. Hence TF variable/name scope is         transparent to users. For example:
  
          .. code-block:: python
  
              encoder = UnidirectionalRNNEncoder(hparams) # create instance
              output_1 = encoder(inputs_1) # variables are created
              output_2 = encoder(inputs_2) # variables are re-used
  
              print(encoder.trainable_variables) # access trainable variables
              # [ ... ]
  
      - **Configurable through hyperparameters**: Each module defines         allowed hyperparameters and default values. Hyperparameters not         specified by users will take default values.
  
      - **Callable**: As the above example, a module instance is "called"         with input tensors and returns output tensors. Every call of a module         will add ops to the Graph to perform the module's logic.
  
  Args:
      hparams (dict, optional): Hyperparameters of the module. See
          :meth:`default_hparams` for the structure and default values.
  
  
  .. document private functions
  .. automethod:: _build
docstr: The list of trainable variables of the module.
          
docstr_tok: ["The","list","of","trainable","variables","of","the","module","."]
code: def trainable_variables(self):
      """The list of trainable variables of the module."""
      if not self._built:
          raise TexarError(
              "Attempting to access trainable_variables before module %s "
              "was fully built. The module is built once it is called, "
              "e.g., with `%s(...)`" % (self.name, self.name)
          )
      return self._trainable_variables
  
file_path: texar/texar/tf/module_base.py
imports: import re
  import tensorflow
  from texar.tf.utils.exceptions import TexarError
  from texar.tf.hyperparams import HParams
label_desc: Use image node_id 9 for calling the ModuleBase obj's underlying member method code with example usage: obj.trainable_variables() and returns: self