code: def forward(self, X):
          
  
          s = X[:-1]
          f = X[-1]
  
          batch_size = len(f)
  
          outputs = self._cuda(torch.Tensor([]))
  
          # Calculate textual features from LSTMs
          for i in range(len(s)):
              state_word = self.lstms[0].init_hidden(batch_size)
              output = self.lstms[0].forward(s[i][0], s[i][1], state_word)
              outputs = torch.cat((outputs, output), 1)
  
          # Concatenate textual features with multi-modal features
          outputs = torch.cat((outputs, f), 1)
  
          return self.linear(outputs)
docs: Forward function.
  
          :param X: The input (batch) of the model contains word sequences for lstm
              and features.
          :type X: For word sequences: a list of torch.Tensor pair (word sequence
              and word mask) of shape (batch_size, sequence_length).
              For features: torch.Tensor of shape (batch_size, feature_size).
          :return: The output of LSTM layer.
          :rtype: torch.Tensor of shape (batch_size, num_classes)