Exemple #1
0
 def build_decoder(cls, args, src_dict, dst_dict):
     """Build a new (multi-)decoder instance."""
     if args.multi_decoder is not None:
         ngram_decoder_args = [None] * args.multi_decoder
         if args.ngram_decoder is not None:
             ngram_decoder_args = args.ngram_decoder
             if len(ngram_decoder_args) == 1:
                 ngram_decoder_args = [ngram_decoder_args[0]
                                       ] * args.multi_decoder
             assert len(ngram_decoder_args) == args.multi_decoder
         decoders = [
             RNNModel.build_single_decoder(args,
                                           src_dict,
                                           dst_dict,
                                           n,
                                           project_output=False)
             for n in ngram_decoder_args
         ]
         decoder = MultiDecoder(
             src_dict,
             dst_dict,
             decoders=decoders,
             combination_strategy=args.multi_decoder_combination_strategy,
             split_encoder=args.multi_encoder is not None,
             vocab_reduction_params=args.vocab_reduction_params,
             training_schedule=args.multi_model_training_schedule,
         )
     else:
         if args.multi_encoder:
             args.encoder_hidden_dim *= args.multi_encoder
         n = args.ngram_decoder[0] if args.ngram_decoder else None
         decoder = RNNModel.build_single_decoder(args, src_dict, dst_dict,
                                                 n)
     return decoder
Exemple #2
0
 def build_decoder(cls, args, src_dict, dst_dict):
     """Build a new (multi-)decoder instance."""
     if args.multi_decoder is not None:
         ngram_decoder_args = [None] * args.multi_decoder
         if args.ngram_decoder is not None:
             ngram_decoder_args = args.ngram_decoder
             if len(ngram_decoder_args) == 1:
                 ngram_decoder_args = [ngram_decoder_args[0]
                                       ] * args.multi_decoder
             assert len(ngram_decoder_args) == args.multi_decoder
         is_lm_args = [False] * args.multi_decoder
         if args.multi_decoder_is_lm is not None:
             is_lm_args = list(map(bool, args.multi_decoder_is_lm))
         assert len(is_lm_args) == args.multi_decoder
         decoders = [
             RNNModel.build_single_decoder(args,
                                           src_dict,
                                           dst_dict,
                                           n,
                                           project_output=False,
                                           is_lm=is_lm)
             for is_lm, n in zip(is_lm_args, ngram_decoder_args)
         ]
         decoder = MultiDecoder(
             src_dict,
             dst_dict,
             decoders=decoders,
             combination_strategy=args.multi_decoder_combination_strategy,
             is_lm=is_lm_args,
             split_encoder=args.multi_encoder is not None,
             vocab_reduction_params=args.vocab_reduction_params,
             training_schedule=args.multi_model_training_schedule,
             fixed_weights=args.multi_model_fixed_weights,
         )
     else:
         if args.multi_encoder:
             args.encoder_hidden_dim *= args.multi_encoder
         n = args.ngram_decoder[0] if args.ngram_decoder else None
         decoder = RNNModel.build_single_decoder(args, src_dict, dst_dict,
                                                 n)
     return decoder