class_docstr: Decoding function which scales the input, adds shift and then applies
  `relu`, `softplus`, `sigmoid` or nothing on its input:
  `result = operation(input * scale + shift)`
  
  Members:
      scale: a scalar with which input is multiplied before being shifted.
          Defaults to 1.
      shift: a scalar which is added to the scaled input before performing
          the operation. Defaults to 0.
      operation: which operation to perform on the transformed input. Options are:
          `RELU`, `SOFTPLUS`, `SIGMOID` or `IDENTITY`. Defaults to `IDENTITY`.
code: def __post_init__(self):
      if self.operation not in [
          DecoderActivation.RELU,
          DecoderActivation.SOFTPLUS,
          DecoderActivation.SIGMOID,
          DecoderActivation.IDENTITY,
      ]:
          raise ValueError(
              "`operation` can only be `RELU`, `SOFTPLUS`, `SIGMOID` or `IDENTITY`."
          )
  
imports: import logging
  from dataclasses import field
  from enum import Enum
  from typing import Dict, Optional, Tuple
  import torch
  from omegaconf import DictConfig
  from pytorch3d.implicitron.tools.config import Configurable, registry, ReplaceableBase, run_auto_creation
label_desc: Use image node_id 1 for calling the ElementwiseDecoder obj's underlying member method code with example usage: obj.__post_init__() without return types