class_docstr: Positional encoding relying on a fourier kernel matching the one used in the
  "Attention is all of Need" paper. The implementation builds on DeTR code
  https://github.com/facebookresearch/detr/blob/master/models/position_encoding.py
class_docstr_tok: ["Positional","encoding","relying","on","a","fourier","kernel","matching","the","one","used","in","the","''","Attention","is","all","of","Need","''","paper",".","The","implementation","builds","on","DeTR","code","https",":","\/\/github.com\/facebookresearch\/detr\/blob\/master\/models\/position_encoding.py"]
code: def forward(self, B, H, W):
      mask = (
          torch.zeros(B, H, W)
          .bool()
          .to(self.token_projection.weight.device)
      )
      not_mask = ~mask
      y_embed = not_mask.cumsum(1, dtype=torch.float32)
      x_embed = not_mask.cumsum(2, dtype=torch.float32)
      eps = 1e-6
      y_embed = y_embed / (y_embed[:, -1:, :] + eps) * self.scale
      x_embed = x_embed / (x_embed[:, :, -1:] + eps) * self.scale
  
      dim_t = torch.arange(
          self.hidden_dim, dtype=torch.float32, device=mask.device
      )
      dim_t = self.temperature ** (2 * (dim_t // 2) / self.hidden_dim)
  
      pos_x = x_embed[:, :, :, None] / dim_t
      pos_y = y_embed[:, :, :, None] / dim_t
      pos_x = torch.stack(
          (pos_x[:, :, :, 0::2].sin(), pos_x[:, :, :, 1::2].cos()),
          dim=4,
      ).flatten(3)
      pos_y = torch.stack(
          (pos_y[:, :, :, 0::2].sin(), pos_y[:, :, :, 1::2].cos()),
          dim=4,
      ).flatten(3)
      pos = torch.cat((pos_y, pos_x), dim=3).permute(0, 3, 1, 2)
      pos = self.token_projection(pos)
      return pos
  
imports: import logging
  import math
  from functools import partial
  from typing import List, Optional
  import torch
  import torch.nn
  from fairscale.nn import checkpoint_wrapper
  from vissl.config import AttrDict
  from vissl.models.model_helpers import DropPath, to_2tuple, trunc_normal_
  from vissl.models.trunks import register_model_trunk
  from vissl.models.trunks.vision_transformer import Mlp
  from vissl.utils.fsdp_utils import fsdp_wrapper
  from vissl.utils.misc import set_torch_seed
label_desc: Use image node_id 2 for calling the PositionalEncodingFourier obj's underlying member method code with example usage: obj.forward(B, H, W) and returns: pos