Ejemplo n.º 1
0
    def build_model(cls, args, src_dict, tgt_dict):
        base_architecture(args)
        if args.encoder_embed_path:
            encoder_pretrained_embedding = utils.load_embedding(
                args.encoder_embed_path, src_dict)
        if args.decoder_embed_path:
            decoder_pretrained_embedding = utils.load_embedding(
                args.decoder_embed_path, tgt_dict)

        encoder = LSTMEncoder(
            dictionary=src_dict,
            embed_dim=args.encoder_embed_dim,
            hidden_size=args.encoder_hidden_size,
            num_layers=args.encoder_num_layers,
            bidirectional=args.encoder_bidirectional,
            dropout_in=args.encoder_dropout_in,
            dropout_out=args.encoder_dropout_out,
            pretrained_embedding=encoder_pretrained_embedding
            if args.encoder_embed_path else None,
        )

        decoder = LSTMDecoder(
            dictionary=tgt_dict,
            embed_dim=args.decoder_embed_dim,
            hidden_size=args.decoder_hidden_size,
            num_layers=args.decoder_num_layers,
            dropout_in=args.decoder_dropout_in,
            dropout_out=args.decoder_dropout_out,
            pretrained_embedding=decoder_pretrained_embedding
            if args.decoder_embed_path else None,
            use_attention=bool(eval(args.decoder_use_attention)),
        )
        return cls(encoder, decoder)
Ejemplo n.º 2
0
 def build_embedding(dictionary, embed_dim, path=None):
     embedding = nn.Embedding(len(dictionary),
                              embed_dim,
                              padding_idx=dictionary.pad_idx)
     if path is not None:
         utils.load_embedding(path, dictionary, embedding)
     return embedding
Ejemplo n.º 3
0
    def build_model(cls, args, src_dict, tgt_dict):
        """ Constructs the model. """
        base_architecture(args)
        encoder_pretrained_embedding = None
        decoder_pretrained_embedding = None

        # Load pre-trained embeddings, if desired
        if args.encoder_embed_path:
            encoder_pretrained_embedding = utils.load_embedding(args.encoder_embed_path, src_dict)
        if args.decoder_embed_path:
            decoder_pretrained_embedding = utils.load_embedding(args.decoder_embed_path, tgt_dict)

        # Construct the encoder
        encoder = LSTMEncoder(dictionary=src_dict,
                              embed_dim=args.encoder_embed_dim,
                              hidden_size=args.encoder_hidden_size,
                              num_layers=args.encoder_num_layers,
                              bidirectional=bool(args.encoder_bidirectional),
                              dropout_in=args.encoder_dropout_in,
                              dropout_out=args.encoder_dropout_out,
                              pretrained_embedding=encoder_pretrained_embedding)

        # Construct the decoder
        decoder = LSTMDecoder(dictionary=tgt_dict,
                              embed_dim=args.decoder_embed_dim,
                              hidden_size=args.decoder_hidden_size,
                              num_layers=args.decoder_num_layers,
                              dropout_in=args.decoder_dropout_in,
                              dropout_out=args.decoder_dropout_out,
                              pretrained_embedding=decoder_pretrained_embedding,
                              use_attention=bool(eval(args.decoder_use_attention)),
                              use_lexical_model=bool(eval(args.decoder_use_lexical_model)))
        return cls(encoder, decoder)
Ejemplo n.º 4
0
 def build_embedding(dictionary, embed_dim, path=None):
     embedding = nn.Embedding(len(dictionary),
                              embed_dim,
                              padding_idx=dictionary.pad_idx)
     nn.init.kaiming_normal_(embedding.weight)
     nn.init.constant_(embedding.weight[dictionary.pad_idx], 0)
     if path is not None:
         utils.load_embedding(path, dictionary, embedding)
     return embedding
Ejemplo n.º 5
0
    def build_model(cls, args, src_dict, tgt_dict):
        """ Constructs the model. """
        base_architecture(args)
        encoder_pretrained_embedding = None
        decoder_pretrained_embedding = None

        # select the device to run the model on
        use_cuda = torch.cuda.is_available() and args.device == 'cuda'
        device = torch.device("cuda" if use_cuda else "cpu")

        # Load pre-trained embeddings, if desired
        if args.encoder_embed_path:
            encoder_pretrained_embedding = utils.load_embedding(
                args.encoder_embed_path, src_dict)
        if args.decoder_embed_path:
            decoder_pretrained_embedding = utils.load_embedding(
                args.decoder_embed_path, tgt_dict)

        # Construct the encoder
        encoder = LSTMEncoder(
            dictionary=src_dict,
            device=device,
            embed_dim=args.encoder_embed_dim,
            hidden_size=args.encoder_hidden_size,
            num_layers=args.encoder_num_layers,
            bidirectional=args.encoder_bidirectional,
            dropout_in=args.encoder_dropout_in,
            dropout_out=args.encoder_dropout_out,
            pretrained_embedding=encoder_pretrained_embedding)

        # Construct the decoder
        decoder = LSTMDecoder(
            dictionary=tgt_dict,
            device=device,
            embed_dim=args.decoder_embed_dim,
            hidden_size=args.decoder_hidden_size,
            num_layers=args.decoder_num_layers,
            dropout_in=args.decoder_dropout_in,
            dropout_out=args.decoder_dropout_out,
            pretrained_embedding=decoder_pretrained_embedding,
            use_attention=bool(eval(args.decoder_use_attention)),
            use_lexical_model=bool(eval(args.decoder_use_lexical_model)))
        return cls(encoder, decoder)