code: def setUp(self):
      self.batch_size = 2
      self.num_arms = 2
      self.params = DisjointLinUCBTrainerParameters()
  
      self.x_dim = 9
      policy_network = DisjointLinearRegressionUCB(
          self.num_arms, self.x_dim
      )
      self.policy = Policy(
          scorer=policy_network, sampler=GreedyActionSampler()
      )
  
      self.trainer = DisjointLinUCBTrainer(
          self.policy, **self.params.asdict()
      )
      self.batch = [
          CBInput(
              context_arm_features=torch.tensor(
                  [
                      [1, 2, 3, 6, 7, 2 * 6, 2 * 7, 3 * 6, 3 * 7],
                      [1, 2, 3, 10, 11, 2 * 10, 2 * 11, 3 * 10, 3 * 11],
                  ],
                  dtype=torch.float,
              ),
              reward=torch.tensor([[1.5], [2.3]], dtype=torch.float),
          ),
          CBInput(
              context_arm_features=torch.tensor(
                  [
                      [1, 4, 5, 8, 9, 4 * 8, 4 * 9, 5 * 8, 5 * 9],
                      [1, 4, 5, 12, 13, 4 * 12, 4 * 13, 5 * 12, 5 * 13],
                  ],
                  dtype=torch.float,
              ),
              reward=torch.tensor([[1.9], [2.8]], dtype=torch.float),
          ),
      ]
  
file_path: ReAgent/reagent/test/training/cb/test_disjoint_linucb.py
imports: import copy
  import unittest
  import numpy
  import numpy.testing
  import torch
  from reagent.core.types import CBInput
  from reagent.gym.policies.policy import Policy
  from reagent.gym.policies.samplers.discrete_sampler import GreedyActionSampler
  from reagent.models.disjoint_linucb_predictor import DisjointLinearRegressionUCB
  from reagent.training.cb.disjoint_linucb_trainer import DisjointLinUCBTrainer
  from reagent.training.parameters import DisjointLinUCBTrainerParameters
label_desc: Use image node_id 1 for calling the TestDisjointLinUCB obj's underlying member method code with example usage: obj.setUp() without return types