docstr: Parameters
  ----------
  F
  mu_vector
      Tensor of shape (..., dim)
  D_vector
      Tensor of shape (..., dim)
  W_vector
      Tensor of shape (..., dim * rank )
  
  Returns
  -------
  Tuple
      A tuple containing tensors mu, D, and W, with shapes
      (..., dim), (..., dim), and (..., dim, rank), respectively.
docstr_tok: ["Parameters","--","--","--","--","--","F","mu_vector","Tensor","of","shape","(","...",",","dim",")","D_vector","Tensor","of","shape","(","...",",","dim",")","W_vector","Tensor","of","shape","(","...",",","dim","*","rank",")","Returns","--","--","--","-","Tuple","A","tuple","containing","tensors","mu",",","D",",","and","W",",","with","shapes","(","...",",","dim",")",",","(","...",",","dim",")",",","and","(","...",",","dim",",","rank",")",",","respectively","."]
code: def domain_map(self, F, mu_vector, D_vector, W_vector=None):
      r"""
  
      Parameters
      ----------
      F
      mu_vector
          Tensor of shape (..., dim)
      D_vector
          Tensor of shape (..., dim)
      W_vector
          Tensor of shape (..., dim * rank )
  
      Returns
      -------
      Tuple
          A tuple containing tensors mu, D, and W, with shapes
          (..., dim), (..., dim), and (..., dim, rank), respectively.
  
      """
  
      d_bias = (
          inv_softplus(self.sigma_init**2)
          if self.sigma_init > 0.0
          else 0.0
      )
  
      # sigma_minimum helps avoiding cholesky problems, we could also jitter
      # However, this seems to cause the maximum likelihood estimation to
      # take longer to converge. This needs to be re-evaluated.
      D_diag = (
          F.Activation(D_vector + d_bias, act_type="softrelu")
          + self.sigma_minimum**2
      )
  
      if self.rank == 0:
          return mu_vector + self.mu_bias, D_diag
      else:
          assert (
              W_vector is not None
          ), "W_vector cannot be None if rank is not zero!"
          # reshape from vector form (..., d * rank) to matrix form
          # (..., d, rank)
          W_matrix = W_vector.reshape(
              (-2, self.dim, self.rank, -4), reverse=1
          )
          return mu_vector + self.mu_bias, D_diag, W_matrix
  
imports: import math
  from typing import Optional, Tuple
  import numpy
  from mxnet import gluon
  from gluonts.core.component import validated
  from gluonts.mx import Tensor
  from .distribution import Distribution, _sample_multiple, getF
  from .distribution_output import ArgProj, DistributionOutput, AffineTransformedDistribution
label_desc: Use image node_id 4 for calling the LowrankMultivariateGaussianOutput obj's underlying member method code with example usage: obj.domain_map(F, mu_vector, D_vector, W_vector) and returns: unknown,  D_diag, unknown,  D_diag,  W_matrix