code: def learn(self, grad_arr):
          '''
          Update this Discriminator by ascending its stochastic gradient.
  
          Args:
              grad_arr:   `np.ndarray` of gradients.
  
          Returns:
              `np.ndarray` of delta or gradients.
  
          '''
          encoder_delta_arr, _, encoder_grads_list = self.__encoder_decoder_controller.encoder.hidden_back_propagate(
              grad_arr[:, -1]
          )
          encoder_grads_list.insert(0, None)
          encoder_grads_list.insert(0, None)
  
          self.__encoder_decoder_controller.encoder.optimize(
              encoder_grads_list, 
              self.__learning_rate,
              1
          )
  
          return encoder_delta_arf learn(self, grad_arr):
          '''
          Update this Discriminator by ascending its stochastic gradient.
  
          Args:
              grad_arr:   `np.ndarray` of gradients.
  
          Returns:
              `np.ndarray` of delta or gradients.
  
          '''
          encoder_delta_arr, _, encoder_grads_list = self.__encoder_decoder_controller.encoder.hidden_back_propagate(
              grad_arr[:, -1]
          )
          encoder_grads_list.insert(0, None)
          encoder_grads_list.insert(0, None)
  
          self.__encoder_decoder_controller.encoder.optimize(
              encoder_grads_list, 
              self.__learning_rate,
              1
          )
  
          return encoder_delta_arr
docs: Update this Discriminator by ascending its stochastic gradient.
  
          Args:
              grad_arr:   `np.ndarray` of gradients.
  
          Returns:
              `np.ndarray` of delta or gradients.