def _loss(self, x, x_adv):
    '\n        Compute the loss function values.\n\n        :param x: An array with the original input.\n        :type x: `np.ndarray`\n        :param x_adv: An array with the adversarial input.\n        :type x_adv: `np.ndarray`\n        :return: A tuple holding the current logits, l1 distance, l2 distance and elastic net loss.\n        :rtype: `(np.ndarray, float, float, float)`\n        '
    l1dist = np.sum(np.abs((x - x_adv)).reshape(x.shape[0], (- 1)), axis=1)
    l2dist = np.sum(np.square((x - x_adv)).reshape(x.shape[0], (- 1)), axis=1)
    endist = ((self.beta * l1dist) + l2dist)
    z = self.classifier.predict(np.array(x_adv, dtype=NUMPY_DTYPE), logits=True)
    return (np.argmax(z, axis=1), l1dist, l2dist, endist)
Compute the loss function values.

:param x: An array with the original input.
:type x: `np.ndarray`
:param x_adv: An array with the adversarial input.
:type x_adv: `np.ndarray`
:return: A tuple holding the current logits, l1 distance, l2 distance and elastic net loss.
:rtype: `(np.ndarray, float, float, float)`
def _loss(self, x, x_adv):
    '\n        Compute the loss function values.\n\n        :param x: An array with the original input.\n        :type x: `np.ndarray`\n        :param x_adv: An array with the adversarial input.\n        :type x_adv: `np.ndarray`\n        :return: A tuple holding the current logits, l1 distance, l2 distance and elastic net loss.\n        :rtype: `(np.ndarray, float, float, float)`\n        '
    l1dist = np.sum(np.abs((x - x_adv)).reshape(x.shape[0], (- 1)), axis=1)
    l2dist = np.sum(np.square((x - x_adv)).reshape(x.shape[0], (- 1)), axis=1)
    endist = ((self.beta * l1dist) + l2dist)
    z = self.classifier.predict(np.array(x_adv, dtype=NUMPY_DTYPE), logits=True)
    return (np.argmax(z, axis=1), l1dist, l2dist, endist)