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.
      momentum (float): The parameter for updating bases.
class_docstr_tok: ["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",".","momentum","(","float",")",":","The","parameter","for","updating","bases","."]
code: def __init__(self, c, k, stage_num=3, momentum=0.1):
      super(EMAU, self).__init__()
      assert stage_num >= 1
      self.stage_num = stage_num
      self.momentum = momentum
      self.c = c
  
      tmp_mu = self.create_parameter(
          shape=[1, c, k],
          default_initializer=paddle.nn.initializer.KaimingNormal(k),
      )
      mu = F.normalize(paddle.to_tensor(tmp_mu), axis=1, p=2)
      self.register_buffer("mu", mu)
  
file_path: PaddleSeg/paddleseg/models/emanet.py
imports: import paddle
  import paddle.nn
  import paddle.nn.functional
  from paddleseg.models import layers
  from paddleseg.cvlibs import manager
  from paddleseg.utils import utils
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, momentum)