code: def get_custom_benchmark(
      use_task_labels=False,
      shuffle=False,
      n_samples_per_class=100,
      train_transform=None,
      eval_transform=None,
  ):
      dataset = make_classification(
          n_samples=10 * n_samples_per_class,
          n_classes=10,
          n_features=6,
          n_informative=6,
          n_redundant=0,
      )
  
      X = torch.from_numpy(dataset[0]).float()
      y = torch.from_numpy(dataset[1]).long()
  
      train_X, test_X, train_y, test_y = train_test_split(
          X, y, train_size=0.8, shuffle=True, stratify=y
      )
  
      train_dataset = TensorDataset(train_X, train_y)
      test_dataset = TensorDataset(test_X, test_y)
      my_nc_benchmark = nc_benchmark(
          train_dataset,
          test_dataset,
          5,
          task_labels=use_task_labels,
          shuffle=shuffle,
          train_transform=train_transform,
          eval_transform=eval_transform,
      )
      return my_nc_benchmark
  
file_path: avalanche/examples/expert_gate.py
imports: import torch
  import argparse
  from torch.utils.data import DataLoader
  from torch.utils.data import TensorDataset
  from torchvision import transforms
  from torch.optim import SGD
  from sklearn.datasets import make_classification
  from sklearn.model_selection import train_test_split
  from avalanche.models import ExpertGate
  from avalanche.benchmarks.classic import SplitMNIST
  from avalanche.training.supervised import ExpertGateStrategy
  from avalanche.models.utils import avalanche_model_adaptation
  from avalanche.benchmarks import nc_benchmark
label_desc: Use image node_id 3 for calling a global function with example usage: get_custom_benchmark(use_task_labels, shuffle, n_samples_per_class, train_transform, eval_transform) and returns: my_nc_benchmark