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)
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
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)
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
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)