docstr: Forward pass NGram conv net.
  
  :param input shape: seq_len, batch_size, feature_dim
docstr_tok: ["Forward","pass","NGram","conv","net",".",":","param","input","shape",":","seq_len",",","batch_size",",","feature_dim"]
code: def forward(
      self, state: torch.Tensor, action: torch.Tensor
  ) -> torch.Tensor:
      """Forward pass NGram conv net.
  
      :param input shape: seq_len, batch_size, feature_dim
      """
      input = torch.cat((state, action), dim=-1)
      # shape: seq_len, batch_size, (state_dim + action_dim) * context_size
      ngram_input = ngram(
          input, self.context_size, self.ngram_padding.to(input.device)
      )
      # shape: batch_size, seq_len
      return self.fc(ngram_input).transpose(0, 1).squeeze(2)
  
imports: import logging
  import math
  from typing import List
  import torch
  import torch.nn
  import torch.nn.functional
  from reagent.core import parameters, types
  from reagent.models import convolutional_network, fully_connected_network
  from reagent.models.base import ModelBase
  from reagent.models.fully_connected_network import ACTIVATION_MAP
label_desc: Use image node_id 2 for calling the NGramFullyConnectedNetwork obj's underlying member method code with example usage: obj.forward(state, action) and returns: self