class_docstr: An A-C layer for memory network.
  
  Args:
      H (optional): The matrix :attr:`H` multiplied to :attr:`o` at the end.
      hparams (dict or HParams, optional): Memory network single layer
          hyperparameters. If it is not specified, the default hyperparameter
          setting is used. See :attr:`default_hparams` for the structure and
          default values.
docstr: An A-C operation with memory and query vector.
  
  Args:
      u (Tensor): The input query `Tensor` of shape `[None, memory_dim]`.
      m (Tensor): Output of A operation. Should be in shape
          `[None, memory_size, memory_dim]`.
      c (Tensor): Output of C operation. Should be in shape
          `[None, memory_size, memory_dim]`.
  
  Returns:
      A `Tensor` of shape same as :attr:`u`.
docstr_tok: ["An","A-C","operation","with","memory","and","query","vector",".","Args",":","u","(","Tensor",")",":","The","input","query","`","Tensor","`","of","shape","`","[","None",",","memory_dim","]","`",".","m","(","Tensor",")",":","Output","of","A","operation",".","Should","be","in","shape","`","[","None",",","memory_size",",","memory_dim","]","`",".","c","(","Tensor",")",":","Output","of","C","operation",".","Should","be","in","shape","`","[","None",",","memory_size",",","memory_dim","]","`",".","Returns",":","A","`","Tensor","`","of","shape","same","as",":","attr",":","`","u","`","."]
code: def _build(self, u, m, c, **kwargs):
      """An A-C operation with memory and query vector.
  
      Args:
          u (Tensor): The input query `Tensor` of shape `[None, memory_dim]`.
          m (Tensor): Output of A operation. Should be in shape
              `[None, memory_size, memory_dim]`.
          c (Tensor): Output of C operation. Should be in shape
              `[None, memory_size, memory_dim]`.
  
      Returns:
          A `Tensor` of shape same as :attr:`u`.
      """
      # Input memory representation
      p = tf.matmul(m, tf.expand_dims(u, axis=2))
      p = tf.transpose(p, perm=[0, 2, 1])
  
      p = tf.nn.softmax(p)  # equ. (1)
  
      # Output memory representation
      o = tf.matmul(p, c)  # equ. (2)
      o = tf.squeeze(o, axis=[1])
  
      if self._H:
          u = tf.matmul(u, self._H)  # RNN-like style
      u_ = tf.add(u, o)  # u^{k+1} = H u^k + o^k
  
      if not self._built:
          self._add_internal_trainable_variables()
          if self._H:
              self._add_trainable_variable(self._H)
          self._built = True
  
      return u_
  
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 3 for calling the MemNetSingleLayer obj's underlying member method code with example usage: obj._build(u, m, c) and returns: u_