class_docstr: Implicit Quantile Layer from the paper ``IQN for Distributional
  Reinforcement Learning`` (https://arxiv.org/abs/1806.06923) by
  Dabney et al. 2018.
code: def __init__(self, num_output: int, cos_embedding_dim: int = 128):
      super().__init__()
  
      self.output_layer = nn.Sequential(
          nn.Linear(cos_embedding_dim, cos_embedding_dim),
          nn.PReLU(),
          nn.Linear(cos_embedding_dim, num_output),
      )
  
      self.register_buffer(
          "integers", torch.arange(0, cos_embedding_dim)
      )
  
imports: from functools import partial
  from typing import Dict, Optional, Tuple, Callable
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.distributions import Distribution, Beta, constraints
  from gluonts.core.component import validated
  from gluonts.torch.distributions import DistributionOutput
  from gluonts.torch.modules.lambda_layer import LambdaLayer
label_desc: Use image node_id 1 to create a new QuantileLayer object from inherited base classes: nn with example: obj = QuantileLayer(num_output, cos_embedding_dim)