class_docstr: Generation strategy for Adaptive Linear Embedding BO.
  
  Both quasirandom initialization and BO are done with the same random
  projection. All function evaluations are done within that projection.
  
  Args:
      D: Dimensionality of high-dimensional space
      d: Dimensionality of low-dimensional space
      init_size: Size of random initialization
      name: Name of strategy
      dtype: torch dtype
      device: torch device
      random_kwargs: kwargs passed along to random model
      gp_kwargs: kwargs passed along to GP model
      gp_gen_kwargs: kwargs passed along to gen call on GP
class_docstr_tok: ["Generation","strategy","for","Adaptive","Linear","Embedding","BO",".","Both","quasirandom","initialization","and","BO","are","done","with","the","same","random","projection",".","All","function","evaluations","are","done","within","that","projection",".","Args",":","D",":","Dimensionality","of","high-dimensional","space","d",":","Dimensionality","of","low-dimensional","space","init_size",":","Size","of","random","initialization","name",":","Name","of","strategy","dtype",":","torch","dtype","device",":","torch","device","random_kwargs",":","kwargs","passed","along","to","random","model","gp_kwargs",":","kwargs","passed","along","to","GP","model","gp_gen_kwargs",":","kwargs","passed","along","to","gen","call","on","GP"]
code: def __init__(
      self,
      D: int,
      d: int,
      init_size: int,
      name: str = "ALEBO",
      dtype: torch.dtype = torch.double,
      device: torch.device = DEFAULT_TORCH_DEVICE,
      random_kwargs: Optional[Dict[str, Any]] = None,
      gp_kwargs: Optional[Dict[str, Any]] = None,
      gp_gen_kwargs: Optional[Dict[str, Any]] = None,
  ) -> None:
      self.D = D
      self.d = d
      self.init_size = init_size
      self.dtype = dtype
      self.device = device
      # pyre-fixme[4]: Attribute must be annotated.
      self.random_kwargs = (
          random_kwargs if random_kwargs is not None else {}
      )
      # pyre-fixme[4]: Attribute must be annotated.
      self.gp_kwargs = gp_kwargs if gp_kwargs is not None else {}
      self.gp_gen_kwargs = gp_gen_kwargs
  
      B = self.gen_projection(d=d, D=D, device=device, dtype=dtype)
  
      self.gp_kwargs.update({"B": B})
      self.random_kwargs.update({"B": B.cpu().numpy()})
  
      steps = [
          GenerationStep(
              model=get_ALEBOInitializer,
              num_trials=init_size,
              model_kwargs=self.random_kwargs,
          ),
          GenerationStep(
              model=get_ALEBO,
              num_trials=-1,
              model_kwargs=self.gp_kwargs,
              model_gen_kwargs=gp_gen_kwargs,
          ),
      ]
      super().__init__(steps=steps, name=name)
  
file_path: Ax/ax/modelbridge/strategies/alebo.py
imports: from typing import Any, Dict, Optional
  import numpy
  import torch
  from ax.core.data import Data
  from ax.core.experiment import Experiment
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.factory import DEFAULT_TORCH_DEVICE
  from ax.modelbridge.generation_strategy import GenerationStep, GenerationStrategy
  from ax.modelbridge.random import RandomModelBridge
  from ax.modelbridge.registry import ALEBO_X_trans, ALEBO_Y_trans
  from ax.modelbridge.torch import TorchModelBridge
  from ax.models.random.alebo_initializer import ALEBOInitializer
  from ax.models.torch.alebo import ALEBO
label_desc: Use image node_id 1 to create a new ALEBOStrategy object from inherited base classes: GenerationStrategy with example: obj = ALEBOStrategy(D, d, init_size, name, dtype, device, random_kwargs, gp_kwargs, gp_gen_kwargs)