class_docstr: Transformer decoder that applies multi-head self-attention for
  sequence decoding.
  
  It is a stack of :class:`~texar.tf.modules.encoders.MultiheadAttentionEncoder`,
  :class:`~texar.tf.modules.FeedForwardNetwork` and residual connections.
  
  Args:
      vocab_size (int, optional): Vocabulary size. Required if
          :attr:`output_layer` is `None`.
      output_layer (optional): An output layer that transforms cell output
          to logits. This can be:
  
          - A callable layer, e.g., an instance             of :tf_main:`tf.layers.Layer <layers/Layer>`.
          - A tensor. A dense layer will be created using the tensor             as the kernel weights. The bias of the dense layer is determined by            `hparams.output_layer_bias`. This can be used to tie the output             layer with the input embedding matrix, as proposed in             https://arxiv.org/pdf/1608.05859.pdf
          - `None`. A dense layer will be created based on attr:`vocab_size`            and `hparams.output_layer_bias`.
          - If no output layer in the end is needed, set             `(vocab_size=None, output_layer=tf.identity)`.
  
  .. document private functions
  .. automethod:: _build
class_docstr_tok: ["Transformer","decoder","that","applies","multi-head","self-attention","for","sequence","decoding",".","It","is","a","stack","of",":","class",":","`","~texar.tf.modules.encoders.MultiheadAttentionEncoder","`",",",":","class",":","`","~texar.tf.modules.FeedForwardNetwork","`","and","residual","connections",".","Args",":","vocab_size","(","int",",","optional",")",":","Vocabulary","size",".","Required","if",":","attr",":","`","output_layer","`","is","`","None","`",".","output_layer","(","optional",")",":","An","output","layer","that","transforms","cell","output","to","logits",".","This","can","be",":","-","A","callable","layer",",","e.g.",",","an","instance","of",":","tf_main",":","`","tf.layers.Layer","<","layers\/Layer",">","`",".","-","A","tensor",".","A","dense","layer","will","be","created","using","the","tensor","as","the","kernel","weights",".","The","bias","of","the","dense","layer","is","determined","by","`","hparams.output_layer_bias","`",".","This","can","be","used","to","tie","the","output","layer","with","the","input","embedding","matrix",",","as","proposed","in","https",":","\/\/arxiv.org\/pdf\/1608.05859.pdf","-","`","None","`",".","A","dense","layer","will","be","created","based","on","attr",":","`","vocab_size","`","and","`","hparams.output_layer_bias","`",".","-","If","no","output","layer","in","the","end","is","needed",",","set","`","(","vocab_size=None",",","output_layer=tf.identity",")","`",".","..","document","private","functions","..","automethod",":",":","_build"]
code: def batch_size(self):
      return self._helper.batch_size
  
imports: import collections
  import tensorflow
  from tensorflow.contrib.seq2seq import Decoder
  from texar.tf.core import layers
  from texar.tf.module_base import ModuleBase
  from texar.tf.modules.networks.networks import FeedForwardNetwork
  from texar.tf.modules.encoders.transformer_encoders import default_transformer_poswise_net_hparams
  from texar.tf.modules.encoders.multihead_attention import MultiheadAttentionEncoder
  from texar.tf.modules.decoders.rnn_decoder_base import _make_output_layer
  from texar.tf.modules.decoders import tf_helpers
  from texar.tf.utils import beam_search, transformer_attentions
  from texar.tf.utils.shapes import shape_list
  from texar.tf.utils.mode import is_train_mode
  from texar.tf.modules.decoders.dynamic_decode import dynamic_decode
label_desc: Use image node_id 9 for calling the TransformerDecoder obj's underlying member method code with example usage: obj.batch_size() and returns: self