コード例 #1
0
 def build_models(self):
     '''
     build all models.
     in this model source and target share embeddings
     '''
     self.train_models['embedding'] = natsEmbedding(
         vocab_size = self.batch_data['vocab_size'],
         emb_dim = self.args.emb_dim,
         share_emb_weight = True
     ).to(self.args.device)
     
     self.train_models['encoder'] = EncoderRNN(
         self.args.emb_dim, self.args.src_hidden_dim,
         self.args.nLayers, 'lstm',
         device = self.args.device
     ).to(self.args.device)
     
     self.train_models['encoder2decoder'] = natsEncoder2Decoder(
         src_hidden_size = self.args.src_hidden_dim,
         trg_hidden_size = self.args.trg_hidden_dim,
         rnn_network = 'lstm',
         device = self.args.device
     ).to(self.args.device)
     
     self.train_models['decoderRNN'] = torch.nn.LSTMCell(
         self.args.emb_dim+self.args.trg_hidden_dim, 
         self.args.trg_hidden_dim
     ).to(self.args.device)
     
     self.train_models['attnEncoder'] = AttentionEncoder(
         self.args.src_hidden_dim,
         self.args.trg_hidden_dim,
         attn_method='luong_general',
         repetition='temporal'
     ).to(self.args.device)
     
     self.train_models['attnDecoder'] = AttentionDecoder(
         self.args.trg_hidden_dim,
         attn_method='luong_general'
     ).to(self.args.device)
     
     self.train_models['wrapDecoder'] = torch.nn.Linear(
         self.args.src_hidden_dim*2+self.args.trg_hidden_dim*2,
         self.args.trg_hidden_dim, bias=True
     ).to(self.args.device)
     
     self.train_models['genPrb'] = torch.nn.Linear(
         self.args.emb_dim+self.args.src_hidden_dim*2+self.args.trg_hidden_dim, 1
     ).to(self.args.device)
     
     # decoder to vocab
     self.train_models['decoder2proj'] = torch.nn.Linear(
         self.args.trg_hidden_dim, self.args.emb_dim, bias=False
     ).to(self.args.device)
コード例 #2
0
    def build_models(self):
        '''
        build all models.
        in this model source and target share embeddings
        '''
        self.base_models['embedding_base'] = natsEmbedding(
            vocab_size=self.batch_data['vocab_size'],
            emb_dim=self.args.emb_dim,
            share_emb_weight=self.args.share_emb_weight
        ).to(self.args.device)

        self.base_models['encoder_base'] = natsEncoder(
            emb_dim=self.args.emb_dim,
            hidden_size=self.args.src_hidden_dim,
            rnn_network=self.args.rnn_network,
            device=self.args.device
        ).to(self.args.device)

        self.train_models['encoder'] = natsEncoder(
            emb_dim=self.args.src_hidden_dim*2,
            hidden_size=self.args.src_hidden_dim,
            rnn_network=self.args.rnn_network,
            device=self.args.device
        ).to(self.args.device)

        self.train_models['encoder2decoder'] = natsEncoder2Decoder(
            src_hidden_size=self.args.src_hidden_dim,
            trg_hidden_size=self.args.trg_hidden_dim,
            rnn_network=self.args.rnn_network
        ).to(self.args.device)

        self.train_models['pgdecoder'] = PointerGeneratorDecoder(
            input_size=self.args.emb_dim,
            src_hidden_size=self.args.src_hidden_dim,
            trg_hidden_size=self.args.trg_hidden_dim,
            attn_method=self.args.attn_method,
            repetition=self.args.repetition,
            pointer_net=self.args.pointer_net,
            attn_decoder=self.args.attn_decoder,
            rnn_network=self.args.rnn_network,
            device=self.args.device
        ).to(self.args.device)

        # decoder to vocab
        if self.args.share_emb_weight:
            self.train_models['decoder2proj'] = torch.nn.Linear(
                self.args.trg_hidden_dim, self.args.emb_dim, bias=False).to(self.args.device)
        else:
            self.train_models['decoder2vocab'] = torch.nn.Linear(
                self.args.trg_hidden_dim, self.batch_data['vocab_size']).to(self.args.device)