class_docstr: Generates an orthogonal matrix weights proposed by Saxe et al.
  
  Args:
      gain (float): scaling factor which should be decided depending on a type of units.
      rng (numpy.random.RandomState): Random number generator.
  
  Example:
  
  .. code-block:: python
  
      import numpy as np
      import nnabla as nn
      import nnabla.parametric_functions as PF
      import nnabla.initializer as I
  
      x = nn.Variable([60,1,28,28])
      w = I.OrthogonalInitializer(np.sqrt(2.0))
      b = I.ConstantInitializer(0.0)
      h = PF.convolution(x, 64, [3, 3], w_init=w, b_init=b, pad=[1, 1], name='conv')
  
  References:
      * `Saxe, et al. Exact solutions to the nonlinear dynamics of
        learning in deep linear neural networks.
        <https://arxiv.org/abs/1312.6120>`_
code: def __init__(self, gain=1.0, rng=None):
      if rng is None:
          rng = random.prng
      self.rng = rng
      self.gain = gain
  
imports: import numpy
  from .None import random
label_desc: Use image node_id 1 to create a new OrthogonalInitializer object from inherited base classes: BaseInitializer with example: obj = OrthogonalInitializer(gain, rng)