code: def __init__(
      self,
      in_channels: int,
      out_channels: int,
      activation: str,
      normalization: str = NORM_BATCH,
      normalization_kwargs: Optional[Mapping] = None,
  ):
      super().__init__()
      if normalization_kwargs is None:
          normalization_kwargs = {}
      self.conv = nn.Sequential(
          nn.Conv2d(
              in_channels,
              in_channels,
              kernel_size=3,
              padding=1,
              bias=False,
          ),
          instantiate_normalization_block(
              normalization, in_channels, **normalization_kwargs
          ),
          instantiate_activation_block(activation, inplace=True),
          nn.Conv2d(
              in_channels,
              out_channels * 4,
              kernel_size=1,
              padding=0,
              bias=False,
          ),
      )
  
      self.shuffle = nn.PixelShuffle(2)
  
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 1 to create a new ProgressiveShuffleBlock object from inherited base classes: nn with example: obj = ProgressiveShuffleBlock(in_channels, out_channels, activation, normalization, normalization_kwargs)