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"]
docstr: Generate the projection matrix B as a (d x D) tensor
docstr_tok: ["Generate","the","projection","matrix","B","as","a","(","d","x","D",")","tensor"]
code: def gen_projection(
      self, d: int, D: int, dtype: torch.dtype, device: torch.device
  ) -> torch.Tensor:
      """Generate the projection matrix B as a (d x D) tensor"""
      B0 = torch.randn(d, D, dtype=dtype, device=device)
      # pyre-fixme[58]: `**` is not supported for operand types `Tensor` and `int`.
      B = B0 / torch.sqrt((B0**2).sum(dim=0))
      return B
  
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 3 for calling the ALEBOStrategy obj's underlying member method code with example usage: obj.gen_projection(d, D, dtype, device) and returns: B