class_docstr: Linear layer in Factorized Noisy Network
  
  Args:
      mu_link (nn.Linear): Linear link that computes mean of output.
      sigma_scale (float): The hyperparameter sigma_0 in the original paper.
          Scaling factor of the initial weights of noise-scaling parameters.
code: def __init__(self, mu_link, sigma_scale=0.4):
      super(FactorizedNoisyLinear, self).__init__()
      self._kernel = None
      self.out_size = mu_link.out_features
      self.hasbias = mu_link.bias is not None
  
      in_size = mu_link.weight.shape[1]
      device = mu_link.weight.device
      self.mu = nn.Linear(in_size, self.out_size, bias=self.hasbias)
      init_lecun_uniform(self.mu.weight, scale=1 / np.sqrt(3))
  
      self.sigma = nn.Linear(in_size, self.out_size, bias=self.hasbias)
      init_variance_scaling_constant(
          self.sigma.weight, scale=sigma_scale
      )
      if self.hasbias:
          init_variance_scaling_constant(
              self.sigma.bias, scale=sigma_scale
          )
  
      self.mu.to(device)
      self.sigma.to(device)
  
file_path: pfrl/pfrl/nn/noisy_linear.py
imports: import numpy
  import torch
  import torch.nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new FactorizedNoisyLinear object from inherited base classes: nn with example: obj = FactorizedNoisyLinear(mu_link, sigma_scale)