class_docstr: Progressive Shuffle head takes the largest feature map and progressively upsample it to the original image size.
  Upsampling is done by doing [Conv3x3 + BN + Activation + Conv1x1 + PixelShuffle].
  At each stage number of channels is reduced by a factor given by `reduction_factor`.
code: def apply_to_final_layer(self, func: Callable[[nn.Module], None]):
      func(self.final)
  
file_path: pytorch-toolbelt/pytorch_toolbelt/modules/heads/progressive_shuffle.py
imports: from typing import Optional, Callable, Mapping
  import numpy
  from torch import nn
  from pytorch_toolbelt.modules import instantiate_activation_block
  from pytorch_toolbelt.modules.interfaces import AbstractHead, FeatureMapsSpecification
  from pytorch_toolbelt.modules.normalization import NORM_BATCH, instantiate_normalization_block
label_desc: Use image node_id 3 for calling the ProgressiveShuffleHead obj's underlying member method code with example usage: obj.apply_to_final_layer(func) without return types