code: def learn(self, grad_arr, fix_opt_flag=False):
          '''
          Update this Discriminator by ascending its stochastic gradient.
  
          Args:
              grad_arr:       `np.ndarray` of gradients.
              fix_opt_flag:   If `False`, no optimization in this model will be done.
          
          Returns:
              `np.ndarray` of delta or gradients.
          '''
          if grad_arr.ndim != 2:
              grad_arr = grad_arr.reshape((grad_arr.shape[0], -1))
          delta_arr = self.__nn.back_propagation(grad_arr)
          if fix_opt_flag is False:
              self.__nn.optimize(self.__learning_rate, 1)
          
          return delta_arf learn(self, grad_arr, fix_opt_flag=False):
          '''
          Update this Discriminator by ascending its stochastic gradient.
  
          Args:
              grad_arr:       `np.ndarray` of gradients.
              fix_opt_flag:   If `False`, no optimization in this model will be done.
          
          Returns:
              `np.ndarray` of delta or gradients.
          '''
          if grad_arr.ndim != 2:
              grad_arr = grad_arr.reshape((grad_arr.shape[0], -1))
          delta_arr = self.__nn.back_propagation(grad_arr)
          if fix_opt_flag is False:
              self.__nn.optimize(self.__learning_rate, 1)
          
          return delta_arr
docs: Update this Discriminator by ascending its stochastic gradient.
  
          Args:
              grad_arr:       `np.ndarray` of gradients.
              fix_opt_flag:   If `False`, no optimization in this model will be done.
          
          Returns:
              `np.ndarray` of delta or gradients.