code: def setUp(self) -> None:
      self.tkwargs: Dict[str, Any] = {
          "device": torch.device("cpu"),
          "dtype": torch.double,
      }
      self.X = torch.tensor(
          [[1.0, 2.0, 3.0], [2.0, 3.0, 4.0]], **self.tkwargs
      )
      self.Y = torch.tensor([[3.0], [4.0]], **self.tkwargs)
      self.Yvar = torch.tensor([[0.0], [2.0]], **self.tkwargs)
      self.bounds = [(0.0, 1.0), (1.0, 4.0), (2.0, 5.0)]
      self.feature_names = ["x1", "x2", "x3"]
      self.objective_weights = torch.tensor([1.0], **self.tkwargs)
      self.outcome_constraints = (
          torch.tensor([[1.0]], **self.tkwargs),
          torch.tensor([[5.0]], **self.tkwargs),
      )
      self.search_space_digest = SearchSpaceDigest(
          feature_names=self.feature_names,
          bounds=self.bounds,
      )
  
file_path: Ax/ax/models/tests/test_posterior_mean.py
imports: from typing import Any, Dict
  import torch
  from ax.core.search_space import SearchSpaceDigest
  from ax.models.torch.botorch import BotorchModel
  from ax.models.torch.botorch_moo import MultiObjectiveBotorchModel
  from ax.models.torch.posterior_mean import get_PosteriorMean
  from ax.models.torch_base import TorchOptConfig
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.mock import fast_botorch_optimize
  from botorch.utils.datasets import SupervisedDataset
label_desc: Use image node_id 1 for calling the PosteriorMeanTest obj's underlying member method code with example usage: obj.setUp() without return types