class_docstr: FreqWiseBlock, see iNeuBe paper.
  
  Block that applies pointwise 2D convolution over
  STFT-like image tensor on frequency axis.
  The input is assumed to be [batch, image_channels, frames, freq].
code: def __init__(
      self,
      in_channels,
      num_freqs,
      out_channels,
      activation=torch.nn.ELU,
  ):
      super(FreqWiseBlock, self).__init__()
  
      self.bottleneck = Conv2DActNorm(
          in_channels,
          out_channels,
          (1, 1),
          (1, 1),
          (0, 0),
          activation=activation,
      )
      self.freq_proc = Conv2DActNorm(
          num_freqs,
          num_freqs,
          (1, 1),
          (1, 1),
          (0, 0),
          activation=activation,
      )
  
imports: import torch
  from packaging.version import parse
  from torch_complex.tensor import ComplexTensor
  from espnet2.torch_utils.get_layer_from_string import get_layer
label_desc: Use image node_id 1 to create a new FreqWiseBlock object from inherited base classes: torch.nn with example: obj = FreqWiseBlock(in_channels, num_freqs, out_channels, activation)