code: def test_1_wasserstein_distance(self):
      nb_train = 1000
      nb_test = 100
      batch_size = 3
      (x_train, y_train), (x_test, y_test), _, _ = load_mnist()
  
      x_train = x_train[0:nb_train]
      x_test = x_test[0:nb_test]
      weights = np.ones_like(x_train)
  
      wd_0 = wasserstein_distance(
          x_train[:batch_size], x_train[:batch_size]
      )
      wd_1 = wasserstein_distance(
          x_train[:batch_size], x_test[:batch_size]
      )
      wd_2 = wasserstein_distance(
          x_train[:batch_size],
          x_train[:batch_size],
          weights[:batch_size],
          weights[:batch_size],
      )
  
      np.testing.assert_array_equal(wd_0, np.asarray([0.0, 0.0, 0.0]))
      np.testing.assert_array_almost_equal(
          wd_1, np.asarray([0.04564, 0.01235, 0.04787]), decimal=4
      )
  
      np.testing.assert_array_equal(
          x_train.shape, np.asarray([nb_train, 28, 28, 1])
      )
      np.testing.assert_array_equal(
          x_test.shape, np.asarray([nb_test, 28, 28, 1])
      )
  
      np.testing.assert_array_equal(wd_2, np.asarray([0.0, 0.0, 0.0]))
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import unittest
  import numpy
  import tensorflow
  import torch.nn
  import torch.nn.functional
  import torch.optim
  from art.attacks.evasion.hop_skip_jump import HopSkipJump
  from art.estimators.classification.keras import KerasClassifier
  from art.estimators.classification.pytorch import PyTorchClassifier
  from art.estimators.classification.tensorflow import TensorFlowClassifier
  from art.metrics.metrics import adversarial_accuracy, empirical_robustness, clever_t, clever_u, clever, loss_sensitivity, wasserstein_distance
  from art.utils import load_mnist
  from tests.utils import master_seed
label_desc: Use image node_id 15 for calling the TestMetrics obj's underlying member method code with example usage: obj.test_1_wasserstein_distance() without return types