class_docstr: An implementation of multi-layer end-to-end memory network,
  with RNN-like weight tying described in
  (Sukhbaatar et al.) End-To-End Memory Networks .
  
  See :meth:`~texar.tf.modules.MemNetBase.get_default_embed_fn` for default
  embedding functions. Customized embedding functions must follow
  the same signature.
  
  Args:
      raw_memory_dim (int): Dimension size of raw memory entries
          (before embedding). For example,
          if a raw memory entry is a word, this is the **vocabulary size**
          (imagine a one-hot representation of word). If a raw memory entry
          is a dense vector, this is the dimension size of the vector.
      input_embed_fn (optional): A callable that embeds raw memory entries
          as inputs.
          This corresponds to the `A` embedding operation in
          (Sukhbaatar et al.)
          If not provided, a default embedding operation is created as
          specified in :attr:`hparams`. See
          :meth:`~texar.tf.modules.MemNetBase.get_default_embed_fn`
          for details.
      output_embed_fn (optional): A callable that embeds raw memory entries
          as outputs.
          This corresponds to the `C` embedding operation in
          (Sukhbaatar et al.)
          If not provided, a default embedding operation is created as
          specified in :attr:`hparams`. See
          :meth:`~texar.tf.modules.MemNetBase.get_default_embed_fn`
          for details.
      query_embed_fn (optional): A callable that embeds query.
          This corresponds to the `B` embedding operation in
          (Sukhbaatar et al.). If not provided and "use_B" is True
          in :attr:`hparams`, a default embedding operation is created as
          specified in :attr:`hparams`. See
          :meth:`~texar.tf.modules.MemNetBase.get_default_embed_fn`
          for details.
          For customized query_embed_fn, note that the function must follow
          the signature of the default embed_fn where `memory_size` must
          be 1.
      hparams (dict or HParams, optional): Hyperparameters. Missing
          hyperparamerter will be set to default values. See
          :meth:`default_hparams` for the hyperparameter sturcture and
          default values.
code: def __init__(
      self,
      raw_memory_dim,
      input_embed_fn=None,
      output_embed_fn=None,
      query_embed_fn=None,
      hparams=None,
  ):
      MemNetBase.__init__(
          self,
          raw_memory_dim,
          input_embed_fn,
          output_embed_fn,
          query_embed_fn,
          hparams,
      )
  
      with tf.variable_scope(self.variable_scope):
          self._AC = MemNetSingleLayer(self.H, hparams={"name": "AC"})
  
          self._W = tf.layers.Dense(
              units=raw_memory_dim, use_bias=False, name="W"
          )
  
imports: import tensorflow
  from texar.tf.module_base import ModuleBase
  from texar.tf.modules.embedders import WordEmbedder, PositionEmbedder
  from texar.tf.utils.mode import switch_dropout
  from texar.tf.modules.memory.embed_fns import default_memnet_embed_fn_hparams
label_desc: Use image node_id 1 to create a new MemNetRNNLike object from inherited base classes: MemNetBase with example: obj = MemNetRNNLike(raw_memory_dim, input_embed_fn, output_embed_fn, query_embed_fn, hparams)