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 forward(self, x):
      idn = x
      # The first 1x1 conv
      x = self.conv1(x)
  
      # The EM Attention
      b, c, h, w = x.size()
      x = x.view(b, c, h * w)  # b * c * n
      mu = self.mu.repeat(b, 1, 1)  # b * c * k
      with torch.no_grad():
          for i in range(self.stage_num):
              x_t = x.permute(0, 2, 1)  # b * n * c
              z = torch.bmm(x_t, mu)  # b * n * k
              z = F.softmax(z, dim=2)  # b * n * k
              z_ = z / (1e-6 + z.sum(dim=1, keepdim=True))
              mu = torch.bmm(x, z_)  # b * c * k
              mu = self._l2norm(mu, dim=1)
  
      # !!! The moving averaging operation is writtern in train.py, which is significant.
  
      z_t = z.permute(0, 2, 1)  # b * k * n
      x = mu.matmul(z_t)  # b * c * n
      x = x.view(b, c, h, w)  # b * c * h * w
      x = F.relu(x, inplace=True)
  
      # The second 1x1 conv
      x = self.conv2(x)
      x = x + idn
      x = F.relu(x, inplace=True)
  
      return x, mu
  
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 2 for calling the EMAU obj's underlying member method code with example usage: obj.forward(x) and returns: x,  mu