def __init__(self, opt, dicts): self.layers = opt.layers self.input_feed = opt.input_feed input_size = opt.word_vec_size if self.input_feed: input_size += opt.rnn_size super(Decoder, self).__init__() self.word_lut = nn.Embedding(dicts.size(), opt.word_vec_size, padding_idx=onmt.Constants.PAD) stackedCell = StackedLSTM if opt.rnn_type == "LSTM" else StackedGRU self.rnn = stackedCell(opt.layers, input_size, opt.rnn_size, opt.dropout) self.attn = onmt.modules.GlobalAttention(opt.rnn_size) self.context_gate = None if opt.context_gate is not None: self.context_gate = ContextGateFactory(opt.context_gate, opt.word_vec_size, opt.rnn_size, opt.rnn_size, opt.rnn_size) self.dropout = nn.Dropout(opt.dropout) self.hidden_size = opt.rnn_size
def __init__(self, opt, dicts): """ Args: opt: model options dicts: Target `Dict` object """ self.layers = opt.dec_layers self.decoder_type = opt.decoder_type self._coverage = opt.coverage_attn self.hidden_size = opt.rnn_size self.input_feed = opt.input_feed input_size = opt.tgt_word_vec_size if self.input_feed: input_size += opt.rnn_size super(Decoder, self).__init__() self.embeddings = Embeddings(opt.tgt_word_vec_size, opt, dicts, None) pad_id = dicts.stoi[onmt.IO.PAD_WORD] if self.decoder_type == "transformer": self.transformer = nn.ModuleList( [onmt.modules.TransformerDecoder(self.hidden_size, opt, pad_id) for _ in range(opt.dec_layers)]) else: if self.input_feed: if opt.rnn_type == "LSTM": stackedCell = onmt.modules.StackedLSTM else: stackedCell = onmt.modules.StackedGRU self.rnn = stackedCell(opt.dec_layers, input_size, opt.rnn_size, opt.dropout) else: self.rnn = getattr(nn, opt.rnn_type)( input_size, opt.rnn_size, num_layers=opt.dec_layers, dropout=opt.dropout ) self.context_gate = None if opt.context_gate is not None: self.context_gate = ContextGateFactory( opt.context_gate, input_size, opt.rnn_size, opt.rnn_size, opt.rnn_size ) self.dropout = nn.Dropout(opt.dropout) # Std attention layer. self.attn = onmt.modules.GlobalAttention( opt.rnn_size, coverage=self._coverage, attn_type=opt.global_attention) # Separate Copy Attention. self._copy = False if opt.copy_attn: self.copy_attn = onmt.modules.GlobalAttention( opt.rnn_size, attn_type=opt.global_attention) self._copy = True
def __init__(self, opt, dicts): """ Args: opt: model options dicts: Target `Dict` object """ self.layers = opt.layers self.decoder_layer = opt.decoder_layer self._coverage = opt.coverage_attn self.exhaustion_loss = opt.exhaustion_loss self.fertility_loss = True if opt.supervised_fertility else False self.hidden_size = opt.rnn_size self.input_feed = opt.input_feed input_size = opt.word_vec_size if self.input_feed: input_size += opt.rnn_size super(Decoder, self).__init__() self.embeddings = Embeddings(opt, dicts, None) if self.decoder_layer == "transformer": self.transformer = nn.ModuleList([ onmt.modules.TransformerDecoder(self.hidden_size, opt) for _ in range(opt.layers) ]) else: if opt.rnn_type == "LSTM": stackedCell = onmt.modules.StackedLSTM else: stackedCell = onmt.modules.StackedGRU self.rnn = stackedCell(opt.layers, input_size, opt.rnn_size, opt.dropout) self.context_gate = None if opt.context_gate is not None: self.context_gate = ContextGateFactory(opt.context_gate, opt.word_vec_size, input_size, opt.rnn_size, opt.rnn_size) self.dropout = nn.Dropout(opt.dropout) # Std attention layer. self.attn = onmt.modules.GlobalAttention( opt.rnn_size, coverage=self._coverage, attn_type=opt.attention_type, attn_transform=opt.attn_transform, c_attn=opt.c_attn) self.fertility = opt.fertility self.predict_fertility = opt.predict_fertility self.guided_fertility = opt.guided_fertility self.supervised_fertility = opt.supervised_fertility # Separate Copy Attention. self._copy = False if opt.copy_attn: self.copy_attn = onmt.modules.GlobalAttention( opt.rnn_size, attn_type=opt.attention_type) self._copy = True
def __init__(self, opt, dicts): """ Args: opt: model options dicts: Target `Dict` object """ self.layers = opt.layers self.input_feed = opt.input_feed input_size = opt.word_vec_size if self.input_feed: input_size += opt.rnn_size self.decoder_layer = opt.__dict__.get("decoder_layer", "") self.positional_encoding = opt.__dict__.get("position_encoding", "") self._coverage = opt.__dict__.get("coverage_attn", False) self.hidden_size = opt.rnn_size super(Decoder, self).__init__() self.word_lut = nn.Embedding(dicts.size(), opt.word_vec_size, padding_idx=onmt.Constants.PAD) if self.decoder_layer == "transformer": self.transformer = nn.ModuleList([ onmt.modules.TransformerDecoder(self.hidden_size, opt) for _ in range(opt.layers) ]) stackedCell = StackedLSTM if opt.rnn_type == "LSTM" else StackedGRU self.rnn = stackedCell(opt.layers, input_size, opt.rnn_size, opt.dropout) self.context_gate = None if opt.context_gate is not None: self.context_gate = ContextGateFactory(opt.context_gate, opt.word_vec_size, opt.rnn_size, opt.rnn_size, opt.rnn_size) self.dropout = nn.Dropout(opt.dropout) self.emb_dropout = nn.Dropout(opt.dropout) # Std attention layer. self.attn = onmt.modules.GlobalAttention(opt.rnn_size, self._coverage) # Separate Copy Attention. self._copy = False if opt.__dict__.get("copy_attn", False): self.copy_attn = onmt.modules.GlobalAttention(opt.rnn_size) self._copy = True # Use positional encodings if self.positional_encoding: self.pe = make_positional_encodings(opt.word_vec_size, 5000).cuda()
def __init__(self, opt): """ Args: opt: model options dicts: Target `Dict` object """ self.layers = opt.layers self.decoder_layer = opt.decoder_layer self._coverage = opt.coverage_attn self.hidden_size = opt.rnn_size self.input_feed = opt.input_feed input_size = opt.word_vec_size if self.input_feed: input_size += opt.rnn_size super(DecoderVideo, self).__init__() #self.embeddings = Embeddings(opt, dicts, None) if opt.rnn_type == "LSTM": stackedCell = onmt.modules.StackedLSTM else: stackedCell = onmt.modules.StackedGRU self.rnn = stackedCell(opt.layers, input_size, opt.rnn_size, opt.dropout) self.context_gate = None if opt.context_gate is not None: self.context_gate = ContextGateFactory( opt.context_gate, input_size, opt.rnn_size, opt.rnn_size, opt.rnn_size ) self.dropout = nn.Dropout(opt.dropout) # Std attention layer. self.attn = onmt.modules.GlobalAttention(opt.rnn_size, coverage=self._coverage, attn_type=opt.attention_type) # Separate Copy Attention. self._copy = False if opt.copy_attn: self.copy_attn = onmt.modules.GlobalAttention( opt.rnn_size, attn_type=opt.attention_type) self._copy = True
def __init__(self, rnn_type, num_layers, hidden_size, attn_type, coverage_attn, context_gate, copy_attn, dropout, embeddings): """ See make_decoder() comment for arguments description. """ super(RNNDecoderBase, self).__init__() # Basic attributes. self.decoder_type = 'rnn' self.num_layers = num_layers self.hidden_size = hidden_size self.embeddings = embeddings self.dropout = nn.Dropout(dropout) # Build the RNN. self.rnn = self._build_rnn(rnn_type, self._input_size, hidden_size, num_layers, dropout) # Set up the context gate. self.context_gate = None if context_gate is not None: self.context_gate = ContextGateFactory( context_gate, self._input_size, hidden_size, hidden_size, hidden_size ) # Set up the standard attention. self._coverage = coverage_attn self.attn = onmt.modules.GlobalAttention( hidden_size, coverage=coverage_attn, attn_type=attn_type ) # Set up a separated copy attention layer, if needed. self._copy = False if copy_attn: self.copy_attn = onmt.modules.GlobalAttention( hidden_size, attn_type=attn_type ) self._copy = True