class_docstr: IGMTF Model
  
  Parameters
  ----------
  d_feat : int
      input dimension for each time step
  metric: str
      the evaluation metric used in early stop
  optimizer : str
      optimizer name
  GPU : str
      the GPU ID(s) used for training
code: def get_train_hidden(self, x_train):
      x_train_values = x_train.values
      daily_index, daily_count = self.get_daily_inter(
          x_train, shuffle=True
      )
      self.igmtf_model.eval()
      train_hidden = []
      train_hidden_day = []
  
      for idx, count in zip(daily_index, daily_count):
          batch = slice(idx, idx + count)
          feature = (
              torch.from_numpy(x_train_values[batch])
              .float()
              .to(self.device)
          )
          out = self.igmtf_model(feature, get_hidden=True)
          train_hidden.append(out.detach().cpu())
          train_hidden_day.append(
              out.detach().cpu().mean(dim=0).unsqueeze(dim=0)
          )
  
      train_hidden = np.asarray(train_hidden, dtype=object)
      train_hidden_day = torch.cat(train_hidden_day)
  
      return train_hidden, train_hidden_day
  
imports: from __future__ import division
  from __future__ import print_function
  import numpy
  import pandas
  from typing import Text, Union
  import copy
  from ...utils import get_or_create_path
  from ...log import get_module_logger
  import torch
  import torch.nn
  import torch.optim
  from .pytorch_utils import count_parameters
  from ...model.base import Model
  from ...data.dataset import DatasetH
  from ...data.dataset.handler import DataHandlerLP
  from ...contrib.model.pytorch_lstm import LSTMModel
  from ...contrib.model.pytorch_gru import GRUModel
label_desc: Use image node_id 7 for calling the IGMTF obj's underlying member method code with example usage: obj.get_train_hidden(x_train) and returns: train_hidden,  train_hidden_day