code: def validate_eval_set(eval_set, eval_name, X_train, y_train):
      """Check if the shapes of eval_set are compatible with (X_train, y_train).
  
      Parameters
      ----------
      eval_set : list of tuple
          List of eval tuple set (X, y).
          The last one is used for early stopping
      eval_name : list of str
          List of eval set names.
      X_train : np.ndarray
          Train owned products
      y_train : np.array
          Train targeted products
  
      Returns
      -------
      eval_names : list of str
          Validated list of eval_names.
      eval_set : list of tuple
          Validated list of eval_set.
  
      """
      eval_name = eval_name or [
          f"val_{i}" for i in range(len(eval_set))
      ]
  
      assert len(eval_set) == len(
          eval_name
      ), "eval_set and eval_name have not the same length"
      if len(eval_set) > 0:
          assert all(
              len(elem) == 2 for elem in eval_set
          ), "Each tuple of eval_set need to have two elements"
      for name, (X, y) in zip(eval_name, eval_set):
          check_input(X)
          msg = (
              f"Dimension mismatch between X_{name} "
              + f"{X.shape} and X_train {X_train.shape}"
          )
          assert len(X.shape) == len(X_train.shape), msg
  
          msg = (
              f"Dimension mismatch between y_{name} "
              + f"{y.shape} and y_train {y_train.shape}"
          )
          assert len(y.shape) == len(y_train.shape), msg
  
          msg = (
              f"Number of columns is different between X_{name} "
              + f"({X.shape[1]}) and X_train ({X_train.shape[1]})"
          )
          assert X.shape[1] == X_train.shape[1], msg
  
          if len(y_train.shape) == 2:
              msg = (
                  f"Number of columns is different between y_{name} "
                  + f"({y.shape[1]}) and y_train ({y_train.shape[1]})"
              )
              assert y.shape[1] == y_train.shape[1], msg
          msg = (
              f"You need the same number of rows between X_{name} "
              + f"({X.shape[0]}) and y_{name} ({y.shape[0]})"
          )
          assert X.shape[0] == y.shape[0], msg
  
      return eval_name, eval_set
  
imports: from torch.utils.data import Dataset
  from torch.utils.data import DataLoader, WeightedRandomSampler
  import torch
  import numpy
  import scipy
  import json
  from sklearn.utils import check_array
  import pandas
  import warnings
label_desc: Use image node_id 7 for calling a global function with example usage: validate_eval_set(eval_set, eval_name, X_train, y_train) and returns: eval_name,  eval_set