Exemplo n.º 1
0
 def load_glove_embedding(self, freeze=False):
     if not cfg.multi_gpu:
         initial_arr = self.m.embedding.weight.data.cpu().numpy()
         emb = torch.from_numpy(
             utils.get_glove_matrix(cfg.glove_path, self.reader.vocab,
                                    initial_arr))
         self.m.embedding.weight.data.copy_(emb)
     else:
         initial_arr = self.m.module.embedding.weight.data.cpu().numpy()
         emb = torch.from_numpy(
             utils.get_glove_matrix(cfg.glove_path, self.reader.vocab,
                                    initial_arr))
         self.m.module.embedding.weight.data.copy_(emb)
Exemplo n.º 2
0
    def __init__(self, env, results_path, tok, episode_len=20):
        super(Seq2SeqAgent, self).__init__(env, results_path)
        self.tok = tok
        self.episode_len = episode_len
        self.feature_size = self.env.feature_size

        # Models
        self.glove_dim = 300
        with open('img_features/objects/object_vocab.txt', 'r') as f_ov:
            self.obj_vocab = [k.strip() for k in f_ov.readlines()]
        glove_matrix = get_glove_matrix(self.obj_vocab, self.glove_dim)
        self.objencoder = ObjEncoder(glove_matrix.size(0), glove_matrix.size(1), glove_matrix).cuda()

        enc_hidden_size = args.rnn_dim//2 if args.bidir else args.rnn_dim

        self.encoder = model.EncoderLSTM(tok.vocab_size(), args.wemb, enc_hidden_size, padding_idx,
                                         args.dropout, bidirectional=args.bidir).cuda()
        self.decoder = model.AttnDecoderLSTM_Graph(args.aemb, args.rnn_dim, args.dropout, feature_size=self.feature_size + args.angle_feat_size).cuda()
        self.critic = model.Critic().cuda()
        self.models = (self.encoder, self.decoder, self.critic)

        # Optimizers
        self.encoder_optimizer = args.optimizer(self.encoder.parameters(), lr=args.lr)
        self.decoder_optimizer = args.optimizer(self.decoder.parameters(), lr=args.lr)
        self.critic_optimizer = args.optimizer(self.critic.parameters(), lr=args.lr)
        self.optimizers = (self.encoder_optimizer, self.decoder_optimizer, self.critic_optimizer)

        # Evaluations
        self.losses = []
        self.criterion = nn.CrossEntropyLoss(ignore_index=args.ignoreid, size_average=False)

        # Logs
        sys.stdout.flush()
        self.logs = defaultdict(list)
    def get_matrix_glove(self):
        model = Glove.load(some_parameters['glove_model'])
        vectors = model.word_vectors
        dictionary = model.dictionary
        corpus_matrix = dict()

        for i in self.corpus.items():
            doc_name = i[0]
            original_sentences = i[1][0]
            preprocesed_sentences = i[1][1]

            ori_sents = extract_sentences(original_sentences, False)
            pp_sents = extract_sentences(preprocesed_sentences, True)

            if self.proccessing:
                matrix = get_glove_matrix(pp_sents, dictionary, vectors)
            else:
                matrix = get_glove_matrix(ori_sents, dictionary, vectors)

            corpus_matrix[doc_name] = matrix

        return corpus_matrix
Exemplo n.º 4
0
    def __init__(self, env, listener, tok):
        self.env = env
        self.feature_size = self.env.feature_size
        self.tok = tok
        self.tok.finalize()
        self.listener = listener

        # Model
        self.glove_dim = 300
        with open(
                '/students/u5399302/MatterportData/data/obj_stats2/objectvocab_filtered_dyno4.txt',
                'r') as f_ov:
            self.obj_vocab = [k.strip() for k in f_ov.readlines()]
        glove_matrix = utils.get_glove_matrix(self.obj_vocab, self.glove_dim)
        self.objencoder = ObjEncoder(glove_matrix.size(0),
                                     glove_matrix.size(1),
                                     glove_matrix).cuda()

        print("VOCAB_SIZE", self.tok.vocab_size())
        self.encoder = model.SpeakerEncoder(self.feature_size +
                                            args.angle_feat_size,
                                            args.rnn_dim,
                                            args.dropout,
                                            bidirectional=args.bidir).cuda()
        self.decoder = model.SpeakerDecoder(self.tok.vocab_size(), args.wemb,
                                            self.tok.word_to_index['<PAD>'],
                                            args.rnn_dim, args.dropout).cuda()
        self.encoder_optimizer = args.optimizer(self.encoder.parameters(),
                                                lr=args.lr)
        self.decoder_optimizer = args.optimizer(self.decoder.parameters(),
                                                lr=args.lr)

        # Evaluation
        self.softmax_loss = torch.nn.CrossEntropyLoss(
            ignore_index=self.tok.word_to_index['<PAD>'])

        # Will be used in beam search
        self.nonreduced_softmax_loss = torch.nn.CrossEntropyLoss(
            ignore_index=self.tok.word_to_index['<PAD>'],
            size_average=False,
            reduce=False)