class_docstr: The Expectation-Maximization Attention Unit (EMAU).
  
  Arguments:
      c (int): The input and output channel number.
      k (int): The number of the bases.
      stage_num (int): The iteration number for EM.
code: def __init__(self, c, k, stage_num=3):
      super(EMAU, self).__init__()
      self.stage_num = stage_num
  
      mu = torch.Tensor(1, c, k)
      mu.normal_(0, math.sqrt(2.0 / k))  # Init with Kaiming Norm.
      mu = self._l2norm(mu, dim=1)
      self.register_buffer("mu", mu)
  
      self.conv1 = nn.Conv2d(c, c, 1)
      self.conv2 = nn.Sequential(
          nn.Conv2d(c, c, 1, bias=False), nn.BatchNorm2d(c)
      )
  
      for m in self.modules():
          if isinstance(m, nn.Conv2d):
              n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
              m.weight.data.normal_(0, math.sqrt(2.0 / n))
          elif isinstance(m, _BatchNorm):
              m.weight.data.fill_(1)
              if m.bias is not None:
                  m.bias.data.zero_()
  
imports: import math
  import torch.utils.model_zoo
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn.modules.batchnorm import _BatchNorm
  from .None import settings
label_desc: Use image node_id 1 to create a new EMAU object from inherited base classes: nn with example: obj = EMAU(c, k, stage_num)