class_docstr: Log-normal loss.
  
  Requirements for original target normalizer:
      * normalized target in log space
class_docstr_tok: ["Log-normal","loss",".","Requirements","for","original","target","normalizer",":","*","normalized","target","in","log","space"]
code: def rescale_parameters(
      self,
      parameters: torch.Tensor,
      target_scale: torch.Tensor,
      encoder: BaseEstimator,
  ) -> torch.Tensor:
      assert isinstance(
          encoder.transformation, str
      ) and encoder.transformation in [
          "log",
          "log1p",
      ], f"Log distribution requires log scaling but found `transformation={encoder.transform}`"
  
      assert encoder.transformation not in [
          "logit"
      ], "Cannot use bound transformation such as 'logit'"
  
      scale = F.softplus(parameters[..., 1]) * target_scale[
          ..., 1
      ].unsqueeze(-1)
      loc = parameters[..., 0] * target_scale[..., 1].unsqueeze(
          -1
      ) + target_scale[..., 0].unsqueeze(-1)
  
      return torch.stack([loc, scale], dim=-1)
  
imports: from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import numpy
  from sklearn.base import BaseEstimator
  import torch
  from torch import distributions, nn
  import torch.nn.functional
  from pytorch_forecasting.data.encoders import TorchNormalizer, softplus_inv
  from pytorch_forecasting.metrics.base_metrics import DistributionLoss, MultivariateDistributionLoss
label_desc: Use image node_id 2 for calling the LogNormalDistributionLoss obj's underlying member method code with example usage: obj.rescale_parameters(parameters, target_scale, encoder) and returns: torch