code: def forward(
      self,
      feat_static_cat: torch.Tensor,
      feat_static_real: torch.Tensor,
      feat_dynamic_cat: torch.Tensor,
      feat_dynamic_real: torch.Tensor,
  ) -> torch.Tensor:
      processed_features = [
          self.process_static_cat(feat_static_cat),
          self.process_static_real(feat_static_real),
          self.process_dynamic_cat(feat_dynamic_cat),
          self.process_dynamic_real(feat_dynamic_real),
      ]
  
      return torch.cat(processed_features, dim=-1)
  
file_path: gluonts/src/gluonts/nursery/robust-mts-attack/pts/modules/feature.py
imports: from typing import List, Optional
  import torch
  import torch.nn
label_desc: Use image node_id 2 for calling the FeatureAssembler obj's underlying member method code with example usage: obj.forward(feat_static_cat, feat_static_real, feat_dynamic_cat, feat_dynamic_real) and returns: torch