code: def _get_decoder_data_shapes(self, bucket_key: Tuple[int, int], batch_beam_size: int) -> List[mx.io.DataDesc]:
          
          source_max_length, target_max_length = bucket_key
          return [mx.io.DataDesc(name=C.TARGET_NAME, shape=(batch_beam_size,),
                                 layout="NT")] + self.decoder.state_shapes(batch_beam_size,
                                                                           target_max_length,
                                                                           self.encoder.get_encoded_seq_len(
                                                                               source_max_length),
                                                                           self.encoder.get_num_hidden())
docs: Returns data shapes of the decoder module.
  
          :param bucket_key: Tuple of (maximum input length, maximum target length).
          :param batch_beam_size: Batch size * beam size.
          :return: List of data descriptions.