code: def __init__(self, d_model, num_expert, world_size, top_k=2):
      super().__init__(num_expert, world_size)
      self.w_gate = nn.Parameter(
          torch.zeros(d_model, self.tot_expert), requires_grad=True
      )
      self.w_noise = nn.Parameter(
          torch.zeros(d_model, self.tot_expert), requires_grad=True
      )
      self.top_k = top_k
      self.softplus = nn.Softplus()
      self.softmax = nn.Softmax(1)
  
      self.noise_epsilon = 1e-2
  
      self.reset_parameters()
  
file_path: fastmoe/fmoe/gates/noisy_gate.py
imports: from .base_gate import BaseGate
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.distributions.normal import Normal
  import math
label_desc: Use image node_id 1 to create a new NoisyGate object from inherited base classes: BaseGate with example: obj = NoisyGate(d_model, num_expert, world_size, top_k)