class_docstr: Differentiable relaxation of the L0 norm penalty objective class.
  An instance of this class can be added to any arbitrary objective to
  construct a PenalizedMCObjective.
docstr: Args:
      X: A "batch_shape x q x dim" representing the points to be evaluated.
  Returns:
      A "1 x batch_shape x q" tensor representing the penalty for each point.
      The first dimension corresponds to the dimension of MC samples.
docstr_tok: ["Args",":","X",":","A","``","batch_shape","x","q","x","dim","''","representing","the","points","to","be","evaluated",".","Returns",":","A","``","1","x","batch_shape","x","q","''","tensor","representing","the","penalty","for","each","point",".","The","first","dimension","corresponds","to","the","dimension","of","MC","samples","."]
code: def __call__(self, X: Tensor) -> Tensor:
      r"""
      Args:
          X: A "batch_shape x q x dim" representing the points to be evaluated.
      Returns:
          A "1 x batch_shape x q" tensor representing the penalty for each point.
          The first dimension corresponds to the dimension of MC samples.
      """
      return super().__call__(X=X).squeeze(dim=-1).unsqueeze(dim=0)
  
imports: from __future__ import annotations
  import math
  from typing import Any, Callable, List, Optional
  import torch
  from botorch.acquisition.acquisition import AcquisitionFunction
  from botorch.acquisition.analytic import AnalyticAcquisitionFunction
  from botorch.acquisition.objective import GenericMCObjective
  from botorch.exceptions import UnsupportedError
  from torch import Tensor
label_desc: Use image node_id 2 for calling the L0PenaltyApproxObjective obj's underlying member method code with example usage: obj.__call__(X) and returns: super