class_docstr: Variant of vanilla numerical encoder, supports dynamic mean re-scaling
code: def decode(
      self,
      encoded_values: torch.Tensor,
      decode_log: bool = None,
      dependency_data=None,
  ):
      if not self.is_prepared:
          raise Exception(
              'You need to call "prepare" before calling "encode" or "decode".'
          )
  
      assert isinstance(
          encoded_values, torch.Tensor
      ), "It is not a tensor!"  # TODO: debug purposes
      assert not decode_log  # TODO: debug purposes
  
      if not dependency_data:
          dependency_data = {"__default": [None] * len(encoded_values)}
  
      # force = True prevents side effects on the original encoded_values
      ev = encoded_values.numpy(force=True)
  
      # set global mean as default
      ret = np.full(
          (ev.shape[0],), dtype=float, fill_value=self._abs_mean
      )
  
      # TODO: perhaps capture nan, infs, etc and set to pow(10,63)?
  
      # set means array
      if self.normalizers is None:
          means = np.full((ev.shape[0],), fill_value=self._abs_mean)
      else:
          means = np.full(
              (len(encoded_values)),
              fill_value=self.normalizers["__default"].abs_mean,
          )
          for i, group in enumerate(
              list(zip(*dependency_data.values()))
          ):
              if group is not None:
                  if tuple(group) in self.normalizers:
                      means[i] = self.normalizers[tuple(group)].abs_mean
                  else:
                      means[i] = self.normalizers["__default"].abs_mean
              else:
                  means[i] = self._abs_mean
  
      # set real value
      real_value = np.multiply(
          ev[:].reshape(
              -1,
          ),
          means,
      )
      valid_mask = np.ones_like(real_value, dtype=bool)
  
      # final filters
      if self.positive_domain:
          real_value = abs(real_value)
  
      ret[valid_mask] = real_value[
          valid_mask
      ]  # TODO probably not needed
  
      return ret.tolist()
  
file_path: lightwood/lightwood/encoder/numeric/ts_numeric.py
imports: from typing import Union, List, Dict
  import torch
  import numpy
  import pandas
  from lightwood.encoder.numeric import NumericEncoder
label_desc: Use image node_id 3 for calling the TsNumericEncoder obj's underlying member method code with example usage: obj.decode(encoded_values, decode_log, dependency_data) and returns: ret