class_docstr: Tweedie loss.
  
  Tweedie regression with log-link. It might be useful, e.g., for modeling total
  loss in insurance, or for any target that might be tweedie-distributed.
  
  The loss will take the exponential of the network output before it is returned as prediction.
  Target normalizer should therefore have no "reverse" transformation, e.g.
  for the :py:class:`~data.timeseries.TimeSeriesDataSet` initialization, one could use:
  
  .. code-block:: python
  
      from pytorch_forecasting import TimeSeriesDataSet, EncoderNormalizer
  
      dataset = TimeSeriesDataSet(
          target_normalizer=EncoderNormalizer(transformation=dict(forward=torch.log1p))
      )
  
  Note that in this example, the data is log1p-transformed before normalized but not re-transformed.
  The TweedieLoss applies this "exp"-re-transformation on the network output after it has been de-normalized.
  The result is the model prediction.
class_docstr_tok: ["Tweedie","loss",".","Tweedie","regression","with","log-link",".","It","might","be","useful",",","e.g.",",","for","modeling","total","loss","in","insurance",",","or","for","any","target","that","might","be","tweedie-distributed",".","The","loss","will","take","the","exponential","of","the","network","output","before","it","is","returned","as","prediction",".","Target","normalizer","should","therefore","have","no","``","reverse","''","transformation",",","e.g",".","for","the",":","py",":","class",":","`","~data.timeseries.TimeSeriesDataSet","`","initialization",",","one","could","use",":","..","code-block",":",":","python","from","pytorch_forecasting","import","TimeSeriesDataSet",",","EncoderNormalizer","dataset","=","TimeSeriesDataSet","(","target_normalizer=EncoderNormalizer","(","transformation=dict","(","forward=torch.log1p",")",")",")","Note","that","in","this","example",",","the","data","is","log1p-transformed","before","normalized","but","not","re-transformed",".","The","TweedieLoss","applies","this","``","exp","''","-re-transformation","on","the","network","output","after","it","has","been","de-normalized",".","The","result","is","the","model","prediction","."]
code: def loss(self, y_pred, y_true):
      y_pred = super().to_prediction(y_pred)
      a = y_true * torch.exp(y_pred * (1 - self.p)) / (1 - self.p)
      b = torch.exp(y_pred * (2 - self.p)) / (2 - self.p)
      loss = -a + b
      return loss
  
imports: from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import scipy.stats
  import torch
  import torch.nn.functional
  from torch.nn.utils import rnn
  from pytorch_forecasting.metrics.base_metrics import MultiHorizonMetric
  from pytorch_forecasting.utils import create_mask, unpack_sequence, unsqueeze_like
label_desc: Use image node_id 3 for calling the TweedieLoss obj's underlying member method code with example usage: obj.loss(y_pred, y_true) and returns: loss