code: def _ssim(
      img1, img2, window, window_size, channel, size_average=True
  ):
      mu1 = F.conv2d(
          img1, window, padding=window_size // 2, groups=channel
      )
      mu2 = F.conv2d(
          img2, window, padding=window_size // 2, groups=channel
      )
  
      mu1_sq = mu1.pow(2)
      mu2_sq = mu2.pow(2)
      mu1_mu2 = mu1 * mu2
  
      sigma1_sq = (
          F.conv2d(
              img1 * img1,
              window,
              padding=window_size // 2,
              groups=channel,
          )
          - mu1_sq
      )
      sigma2_sq = (
          F.conv2d(
              img2 * img2,
              window,
              padding=window_size // 2,
              groups=channel,
          )
          - mu2_sq
      )
      sigma12 = (
          F.conv2d(
              img1 * img2,
              window,
              padding=window_size // 2,
              groups=channel,
          )
          - mu1_mu2
      )
  
      C1 = 0.01**2
      C2 = 0.03**2
  
      ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / (
          (mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2)
      )
  
      if size_average:
          return ssim_map.mean()
      else:
          return ssim_map.mean(1).mean(1).mean(1)
  
file_path: splatter-image/utils/loss_utils.py
imports: import torch
  import torch.nn.functional
  from torch.autograd import Variable
  from math import exp
label_desc: Use image node_id 6 for calling a global function with example usage: _ssim(img1, img2, window, window_size, channel, size_average) and returns: ssim_map, ssim_map