class_docstr: Linear layer in Factorized Noisy Network
  
  Args:
      mu_link (L.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.
class_docstr_tok: ["Linear","layer","in","Factorized","Noisy","Network","Args",":","mu_link","(","L.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 __call__(self, x):
      if self.mu.W.array is None:
          self.mu.W.initialize((self.out_size, numpy.prod(x.shape[1:])))
      if self.sigma.W.array is None:
          self.sigma.W.initialize(
              (self.out_size, numpy.prod(x.shape[1:]))
          )
  
      # use info of sigma.W to avoid strange error messages
      dtype = self.sigma.W.dtype
      out_size, in_size = self.sigma.W.shape
  
      eps = self._eps(in_size + out_size, dtype)
      eps_x = eps[:in_size]
      eps_y = eps[in_size:]
      W = muladd(self.sigma.W, self.xp.outer(eps_y, eps_x), self.mu.W)
      if self.nobias:
          return F.linear(x, W)
      else:
          b = muladd(self.sigma.b, eps_y, self.mu.b)
          return F.linear(x, W, b)
  
file_path: chainerrl/chainerrl/links/noisy_linear.py
imports: import chainer
  from chainer import cuda
  import chainer.functions
  from chainer.initializers import LeCunUniform
  import chainer.links
  import numpy
  from chainerrl.functions import muladd
  from chainerrl.initializers import VarianceScalingConstant
label_desc: Use image node_id 4 for calling the FactorizedNoisyLinear obj's underlying member method code with example usage: obj.__call__(x) and returns: F, F