code: def train_bc_model(
      train_dataloader, num_epochs
  ) -> pl.LightningModule:
      bc_net = FullyConnectedDQN(
          state_dim=8,  # input
          action_dim=4,  # output
          sizes=[7, 6, 5],  # hidden layers
          activations=["relu", "relu", "relu"],
      )
  
      optimizer = Optimizer__Union(Adam=classes["Adam"]())
      bc_trainer = BehavioralCloningTrainer(
          bc_net=bc_net, optimizer=optimizer
      )
      pl_trainer = pl.Trainer(max_epochs=num_epochs, deterministic=True)
      pl_trainer.fit(bc_trainer, train_dataloader)
      return bc_trainer
  
imports: import logging
  import unittest
  from enum import Enum
  import pytorch_lightning
  import torch
  from pytorch_lightning import seed_everything
  from reagent.core import types
  from reagent.models.dqn import FullyConnectedDQN
  from reagent.optimizer.union import classes, Optimizer__Union
  from reagent.training.behavioral_cloning_trainer import BehavioralCloningTrainer
  from torch.utils.data import DataLoader
label_desc: Use image node_id 3 for calling a global function with example usage: train_bc_model(train_dataloader, num_epochs) and returns: bc_trainer