class_docstr: Compute the augmentation loss, as described in the
  `RangeAugment <https://arxiv.org/abs/2212.10553>`_ paper.
  
  Args:
      opts: command line arguments
class_docstr_tok: ["Compute","the","augmentation","loss",",","as","described","in","the","`","RangeAugment","<","https",":","\/\/arxiv.org\/abs\/2212.10553",">","`","_","paper",".","Args",":","opts",":","command","line","arguments"]
docstr: Compute the MSE error between input and augmented image, and minimizes
  the distance between MSE error and target error.
  
  Args:
      input_tensor: Input image of shape [N, C, H, W]
      augmented_tensor: Augmented image of shape [N, C, H, W]
  
  Returns:
      A scalar loss value
docstr_tok: ["Compute","the","MSE","error","between","input","and","augmented","image",",","and","minimizes","the","distance","between","MSE","error","and","target","error",".","Args",":","input_tensor",":","Input","image","of","shape","[","N",",","C",",","H",",","W","]","augmented_tensor",":","Augmented","image","of","shape","[","N",",","C",",","H",",","W","]","Returns",":","A","scalar","loss","value"]
code: def _forward_psnr(
      self,
      input_tensor: Tensor,
      augmented_tensor: Tensor,
      *args,
      **kwargs,
  ) -> Tensor:
      """Compute the MSE error between input and augmented image, and minimizes
      the distance between MSE error and target error.
  
      Args:
          input_tensor: Input image of shape [N, C, H, W]
          augmented_tensor: Augmented image of shape [N, C, H, W]
  
      Returns:
          A scalar loss value
      """
  
      squared_err = ((augmented_tensor - input_tensor) * 255.0) ** 2
      # [B, C, H, W] --> [B]
      pred_mse = torch.mean(squared_err, dim=[1, 2, 3])
  
      if self.curriculumn_learning:
          step = (
              kwargs.get("iterations", 0)
              if self.iteration_based_training
              else kwargs.get("epoch", 0)
          )
          if step >= len(self.target_value):
              step = -1
          target_mse = self.target_value[step]
      else:
          target_mse = self.target_value
  
      # compute L1 loss between target and current MSE
      smooth_l1_loss = F.smooth_l1_loss(
          input=pred_mse,
          target=target_mse.expand_as(pred_mse).to(
              device=pred_mse.device, dtype=pred_mse.dtype
          ),
          reduction="mean",
      )
  
      loss_na = smooth_l1_loss * self.alpha
      return loss_na
  
file_path: ml-cvnets/loss_fn/neural_augmentation.py
imports: import argparse
  import math
  from typing import List, Mapping, Union
  import torch
  from torch import Tensor
  from torch.nn import functional
  from loss_fn import LOSS_REGISTRY, BaseCriteria
  from utils import logger
  from utils.ddp_utils import is_master
label_desc: Use image node_id 3 for calling the NeuralAugmentation obj's underlying member method code with example usage: obj._forward_psnr(input_tensor, augmented_tensor) and returns: loss_na