def _get_encoded_h(self, xt, BS): # Compute encoder RNN hidden states h_prime = torch.zeros(1, BS, self.rnn_hidden_dim).to(device) hidden_seq, _ = self.rnn_module(xt, h_prime) # (T, BS, rnn_hidden_dim) augmented_hidden_seq = BaseModel.augment_hidden_sequence( h_prime, hidden_seq) return augmented_hidden_seq
def _get_encoded_h(self, xt: torch.Tensor, mask: torch.Tensor, T: int, BS: int): """ Encoder for Forward and Reverse RNN hidden states for Model 2 :param xt: :param mask: :return: augmented_hidden_seq, reverse_hidden_seq augmented_hidden_seq = [h_prime, h_0, ..., h_{T-1}] reverse_hidden_seq = [a_0, a_1, ..., a_{T-1}] """ h_prime = torch.zeros(1, BS, self.rnn_hidden_dim).to(device) hidden_seq, _ = self.rnn_module(xt, h_prime) # (T, BS, rnn_hidden_dim) augmented_hidden_seq = BaseModel.augment_hidden_sequence( h_prime, hidden_seq) reverse_hidden_seq = self._get_reversed_hidden_seq( xt, augmented_hidden_seq, mask, T, BS) return augmented_hidden_seq, reverse_hidden_seq