code: def _create_window(self, n_dim, channel=1):
      _1D_window = self._gaussian(1.5).unsqueeze(1)
      _2D_window = _1D_window.mm(_1D_window.t()).float()
  
      _3D_window = (
          torch.stack([_2D_window * x for x in _1D_window], dim=2)
          .float()
          .unsqueeze(0)
          .unsqueeze(0)
      )
      _2D_window = _2D_window.unsqueeze(0).unsqueeze(0)
  
      if n_dim == 3:
          return _3D_window.expand(
              channel,
              1,
              self.window_size,
              self.window_size,
              self.window_size,
          ).contiguous()
      else:
          return _2D_window.expand(
              channel, 1, self.window_size, self.window_size
          ).contiguous()
  
file_path: benchmark_VAE/src/pythae/models/msssim_vae/msssim_vae_utils.py
imports: import numpy
  import torch
  import torch.nn.functional
label_desc: Use image node_id 3 for calling the MSSSIM obj's underlying member method code with example usage: obj._create_window(n_dim, channel) and returns: _3D_window, _2D_window