class_docstr: A pooling module augmented with Conv, Normalization and Activation both
  before and after pooling for the head layer of X3D.
  
  ::
  
                                  Conv3d (pre_conv)
                                         ↓
                               Normalization (pre_norm)
                                         ↓
                                 Activation (pre_act)
                                         ↓
                                      Pool3d
                                         ↓
                                  Conv3d (post_conv)
                                         ↓
                               Normalization (post_norm)
                                         ↓
                                 Activation (post_act)
code: def forward(self, x: torch.Tensor) -> torch.Tensor:
      x = self.pre_conv(x)
  
      if self.pre_norm is not None:
          x = self.pre_norm(x)
      if self.pre_act is not None:
          x = self.pre_act(x)
  
      x = self.pool(x)
      x = self.post_conv(x)
  
      if self.post_norm is not None:
          x = self.post_norm(x)
      if self.post_act is not None:
          x = self.post_act(x)
      return x
  
imports: import math
  from typing import Callable, Tuple
  import numpy
  import torch
  import torch.nn
  from fvcore.nn.squeeze_excitation import SqueezeExcitation
  from pytorchvideo.layers.convolutions import Conv2plus1d
  from pytorchvideo.layers.swish import Swish
  from pytorchvideo.layers.utils import round_repeats, round_width, set_attributes
  from pytorchvideo.models.head import ResNetBasicHead
  from pytorchvideo.models.net import Net
  from pytorchvideo.models.resnet import BottleneckBlock, ResBlock, ResStage
  from pytorchvideo.models.stem import ResNetBasicStem
label_desc: Use image node_id 2 for calling the ProjectedPool obj's underlying member method code with example usage: obj.forward(x) and returns: x