def call(self, decoder_inputs, encoder_outputs, decoder_self_attention_bias, attention_bias, training, cache=None):
    'Return the output of the decoder layer stacks.\n\n    Args:\n      decoder_inputs: A tensor with shape [batch_size, target_length,\n        hidden_size].\n      encoder_outputs: A tensor with shape [batch_size, input_length,\n        hidden_size]\n      decoder_self_attention_bias: A tensor with shape [1, 1, target_len,\n        target_length], the bias for decoder self-attention layer.\n      attention_bias: A tensor with shape [batch_size, 1, 1, input_length], the\n        bias for encoder-decoder attention layer.\n      training: A bool, whether in training mode or not.\n      cache: (Used for fast decoding) A nested dictionary storing previous\n        decoder self-attention values. The items are:\n          {layer_n: {"k": A tensor with shape [batch_size, i, key_channels],\n                     "v": A tensor with shape [batch_size, i, value_channels]},\n                       ...}\n\n    Returns:\n      Output of decoder layer stack.\n      float32 tensor with shape [batch_size, target_length, hidden_size]\n    '
    outputs = self._transformer_decoder(decoder_inputs, encoder_outputs, decoder_self_attention_bias, attention_bias, training=training, cache=cache)
    return outputs
Return the output of the decoder layer stacks.

Args:
  decoder_inputs: A tensor with shape [batch_size, target_length,
    hidden_size].
  encoder_outputs: A tensor with shape [batch_size, input_length,
    hidden_size]
  decoder_self_attention_bias: A tensor with shape [1, 1, target_len,
    target_length], the bias for decoder self-attention layer.
  attention_bias: A tensor with shape [batch_size, 1, 1, input_length], the
    bias for encoder-decoder attention layer.
  training: A bool, whether in training mode or not.
  cache: (Used for fast decoding) A nested dictionary storing previous
    decoder self-attention values. The items are:
      {layer_n: {"k": A tensor with shape [batch_size, i, key_channels],
                 "v": A tensor with shape [batch_size, i, value_channels]},
                   ...}

Returns:
  Output of decoder layer stack.
  float32 tensor with shape [batch_size, target_length, hidden_size]
def call(self, decoder_inputs, encoder_outputs, decoder_self_attention_bias, attention_bias, training, cache=None):
    'Return the output of the decoder layer stacks.\n\n    Args:\n      decoder_inputs: A tensor with shape [batch_size, target_length,\n        hidden_size].\n      encoder_outputs: A tensor with shape [batch_size, input_length,\n        hidden_size]\n      decoder_self_attention_bias: A tensor with shape [1, 1, target_len,\n        target_length], the bias for decoder self-attention layer.\n      attention_bias: A tensor with shape [batch_size, 1, 1, input_length], the\n        bias for encoder-decoder attention layer.\n      training: A bool, whether in training mode or not.\n      cache: (Used for fast decoding) A nested dictionary storing previous\n        decoder self-attention values. The items are:\n          {layer_n: {"k": A tensor with shape [batch_size, i, key_channels],\n                     "v": A tensor with shape [batch_size, i, value_channels]},\n                       ...}\n\n    Returns:\n      Output of decoder layer stack.\n      float32 tensor with shape [batch_size, target_length, hidden_size]\n    '
    outputs = self._transformer_decoder(decoder_inputs, encoder_outputs, decoder_self_attention_bias, attention_bias, training=training, cache=cache)
    return outputs