class_docstr: Implementation of the Knockoff Nets attack from Orekondy et al. (2018).
  
  | Paper link: https://arxiv.org/abs/1812.02766
docstr: Compute `loss` reward value.
  
  :param y_output: Output of the victim classifier.
  :param y_hat: Output of the thieved classifier.
  :return: Reward value.
docstr_tok: ["Compute","`","loss","`","reward","value",".",":","param","y_output",":","Output","of","the","victim","classifier",".",":","param","y_hat",":","Output","of","the","thieved","classifier",".",":","return",":","Reward","value","."]
code: def _reward_loss(
      self, y_output: np.ndarray, y_hat: np.ndarray
  ) -> float:
      """
      Compute `loss` reward value.
  
      :param y_output: Output of the victim classifier.
      :param y_hat: Output of the thieved classifier.
      :return: Reward value.
      """
      # Compute victim probs
      aux_exp = np.exp(y_output[0])
      probs_output = aux_exp / np.sum(aux_exp)
  
      # Compute thieved probs
      aux_exp = np.exp(y_hat[0])
      probs_hat = aux_exp / np.sum(aux_exp)
  
      # Compute reward
      reward = 0
      for k in range(self.estimator.nb_classes):
          reward += -probs_output[k] * np.log(probs_hat[k])
  
      return reward
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, TYPE_CHECKING, Union
  import numpy
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.attacks.attack import ExtractionAttack
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import to_categorical
label_desc: Use image node_id 11 for calling the KnockoffNets obj's underlying member method code with example usage: obj._reward_loss(y_output, y_hat) and returns: reward