code: def default_rnn_cell_hparams():
      r"""Returns a `dict` of RNN cell hyperparameters and their default values.
  
      .. code-block:: python
  
          {
              "type": "LSTMCell",
              "kwargs": {
                  "num_units": 256
              },
              "num_layers": 1,
              "dropout": {
                  "input_keep_prob": 1.0,
                  "output_keep_prob": 1.0,
                  "state_keep_prob": 1.0,
                  "variational_recurrent": False,
                  "input_size": []
              },
              "residual": False,
              "highway": False,
          }
  
      Here:
  
      `"type"`: str or cell class or cell instance
          The RNN cell type. This can be
  
          - The string name or full module path of a cell class. If class name is
            provided, the class must be in module
            :tf_main:`tf.nn.rnn_cell <nn/rnn_cell/LSTMCell>`,
            :tf_main:`tf.contrib.rnn <contrib/rnn>`, or :mod:`texar.tf.custom`.
          - A cell class.
          - An instance of a cell class. This is not valid if `"num_layers"` > 1.
  
          For example
  
          .. code-block:: python
  
              "type": "LSTMCell" # class name
              "type": "tensorflow.contrib.rnn.Conv1DLSTMCell" # module path
              "type": "my_module.MyCell" # module path
              "type": tf.nn.rnn_cell.GRUCell # class
              "type": BasicRNNCell(num_units=100) # cell instance
              "type": MyCell(...) # cell instance
  
      `"kwargs"`: dict
          Keyword arguments for the constructor of the cell class.
          A cell is created by :python:`cell_class(**kwargs)`, where
          `cell_class` is specified in "type" above.
  
          Ignored if "type" is a cell instance.
  
      `"num_layers"`: int
          Number of cell layers. Each layer is a cell created as above, with
          the same hyperparameters specified in `"kwargs"`.
  
      `"dropout"`: dict
          Dropout applied to the cell in **each** layer. See
          :tf_main:`DropoutWrapper <contrib/rnn/DropoutWrapper>` for details of
          the hyperparameters. If all `"\*_keep_prob"` = 1, no dropout is applied.
  
          Specifically, if `"variational_recurrent"` = `True`,
          the same dropout mask is applied across all time steps per run call.
          If `True`, `"input_size"` is required, which is a list of input
          size of each cell layer. The input size of a cell layer is the last
          dimension size of its input tensor. For example, the
          input size of the first layer is usually the dimension of
          word embeddings, while the input size of subsequent layers
          are usually the `num_units` of the preceding-layer cell. E.g.,
  
          .. code-block:: python
  
              # Assume embedding_dim = 100
              "type": "LSTMCell",
              "kwargs": { "num_units": 123 },
              "num_layers": 3,
              "dropout": {
                  "output_keep_prob": 0.5,
                  "variational_recurrent": True,
                  "input_size": [100, 123, 123]
              }
  
      `"residual"`: bool
          If `True`, apply residual connection on the inputs and
          outputs of cell in **each** layer except the first layer. Ignored
          if `"num_layers"` = 1.
  
      `"highway"`: bool
          If True, apply highway connection on the inputs and
          outputs of cell in each layer except the first layer. Ignored if
          `"num_layers"` = 1.
      """
      return {
          "type": "LSTMCell",
          "kwargs": {
              "num_units": 256,
          },
          "num_layers": 1,
          "dropout": {
              "input_keep_prob": 1.0,
              "output_keep_prob": 1.0,
              "state_keep_prob": 1.0,
              "variational_recurrent": False,
              "input_size": [],
              "@no_typecheck": [
                  "input_keep_prob",
                  "output_keep_prob",
                  "state_keep_prob",
              ],
          },
          "residual": False,
          "highway": False,
          "@no_typecheck": ["type"],
      }
  
imports: import copy
  import tensorflow
  import tensorflow.contrib.rnn
  from texar.tf.hyperparams import HParams
  from texar.tf.utils import utils
  from texar.tf.utils.dtypes import is_str
  from texar.tf.utils.variables import add_variable
  from texar.tf.utils.mode import is_train_mode, switch_dropout
label_desc: Use image node_id 1 for calling a global function with example usage: default_rnn_cell_hparams() and returns: dict