docstr: Trains one batch of data
  
  Parameters
  ----------
  X : torch.Tensor
      Train matrix
  
  Returns
  -------
  batch_outs : dict
      Dictionnary with "y": target and "score": prediction scores.
  batch_logs : dict
      Dictionnary with "batch_size" and "loss".
docstr_tok: ["Trains","one","batch","of","data","Parameters","--","--","--","--","--","X",":","torch.Tensor","Train","matrix","Returns","--","--","--","-","batch_outs",":","dict","Dictionnary","with","``","y","''",":","target","and","``","score","''",":","prediction","scores",".","batch_logs",":","dict","Dictionnary","with","``","batch_size","''","and","``","loss","''","."]
code: def _train_batch(self, X):
      """
      Trains one batch of data
  
      Parameters
      ----------
      X : torch.Tensor
          Train matrix
  
      Returns
      -------
      batch_outs : dict
          Dictionnary with "y": target and "score": prediction scores.
      batch_logs : dict
          Dictionnary with "batch_size" and "loss".
      """
      batch_logs = {"batch_size": X.shape[0]}
  
      X = X.to(self.device).float()
  
      for param in self.network.parameters():
          param.grad = None
  
      output, embedded_x, obf_vars = self.network(X)
      loss = self.compute_loss(output, embedded_x, obf_vars)
  
      # Perform backward pass and optimization
      loss.backward()
      if self.clip_value:
          clip_grad_norm_(self.network.parameters(), self.clip_value)
      self._optimizer.step()
  
      batch_logs["loss"] = loss.cpu().detach().numpy().item()
  
      return batch_logs
  
imports: import torch
  import numpy
  from torch.utils.data import DataLoader
  from pytorch_tabnet import tab_network
  from pytorch_tabnet.utils import create_explain_matrix, filter_weights, SparsePredictDataset, PredictDataset, check_input, create_group_matrix
  from torch.nn.utils import clip_grad_norm_
  from pytorch_tabnet.pretraining_utils import create_dataloaders, validate_eval_set
  from pytorch_tabnet.metrics import UnsupMetricContainer, check_metrics, UnsupervisedLoss
  from pytorch_tabnet.abstract_model import TabModel
  import scipy
label_desc: Use image node_id 11 for calling the TabNetPretrainer obj's underlying member method code with example usage: obj._train_batch(X) and returns: batch_logs