class_docstr: A block that can be used to project from a dense layer to distribution
  arguments.
  
  Parameters
  ----------
  dim_args
      Dictionary with string key and int value
      dimension of each arguments that will be passed to the domain
      map, the names are used as parameters prefix.
  domain_map
      Function returning a tuple containing one tensor
      a function or a HybridBlock. This will be called with num_args
      arguments and should return a tuple of outputs that will be
      used when calling the distribution constructor.
code: def __init__(
      self,
      args_dim: Dict[str, int],
      domain_map: Callable[..., Tuple[Tensor]],
      dtype: Type = np.float32,
      prefix: Optional[str] = None,
      **kwargs,
  ) -> None:
      super().__init__(**kwargs)
      self.args_dim = args_dim
      self.dtype = dtype
      self.proj = [
          gluon.nn.Dense(
              dim,
              flatten=False,
              dtype=self.dtype,
              prefix=f"{prefix}_distr_{name}_",
          )
          for name, dim in args_dim.items()
      ]
      for dense in self.proj:
          self.register_child(dense)
      self.domain_map = domain_map
  
imports: from typing import Callable, Dict, Optional, Tuple, Type
  import numpy
  from mxnet import gluon
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from .distribution import Distribution
  from .transformed_distribution import AffineTransformedDistribution
label_desc: Use image node_id 1 to create a new ArgProj object from inherited base classes: gluon with example: obj = ArgProj(args_dim, domain_map, dtype, prefix)