text: import torch.nn as nn
  
  
  def xavier_init(module, gain=1, bias=0, distribution='normal'):
      assert distribution in ['uniform', 'normal']
      if distribution == 'uniform':
          nn.init.xavier_uniform_(module.weight, gain=gain)
      else:
          nn.init.xavier_normal_(module.weight, gain=gain)
      if hasattr(module, 'bias'):
          nn.init.constant_(module.bias, bias)
  
  
  def normal_init(module, mean=0, std=1, bias=0):
      nn.init.normal_(module.weight, mean, std)
      if hasattr(module, 'bias'):
          nn.init.constant_(module.bias, bias)
  
  
  def uniform_init(module, a=0, b=1, bias=0):
      nn.init.uniform_(module.weight, a, b)
      if hasattr(module, 'bias'):
          nn.init.constant_(module.bias, bias)
  
  
  def kaiming_init(module,
                   mode='fan_out',
                   nonlinearity='relu',
                   bias=0,
                   distribution='normal'):
      assert distribution in ['uniform', 'normal']
      if distribution == 'uniform':
          nn.init.kaiming_uniform_(
              module.weight, mode=mode, nonlinearity=nonlinearity)
      else:
          nn.init.kaiming_normal_(
              module.weight, mode=mode, nonlinearity=nonlinearity)
      if hasattr(module, 'bias'):
          nn.init.constant_(module.bias, bias)
  