class_docstr: Implements ``Wasserstein Adversarial Examples via Projected Sinkhorn Iterations`` as evasion attack.
  
  | Paper link: https://arxiv.org/abs/1902.07906
class_docstr_tok: ["Implements","``","Wasserstein","Adversarial","Examples","via","Projected","Sinkhorn","Iterations","``","as","evasion","attack",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/1902.07906"]
docstr: Compute batch dot product.
  
  :param x: Sample batch.
  :param y: Sample batch.
  :return: Batch dot product.
docstr_tok: ["Compute","batch","dot","product",".",":","param","x",":","Sample","batch",".",":","param","y",":","Sample","batch",".",":","return",":","Batch","dot","product","."]
code: def _batch_dot(x: np.ndarray, y: np.ndarray) -> np.ndarray:
      """
      Compute batch dot product.
  
      :param x: Sample batch.
      :param y: Sample batch.
      :return: Batch dot product.
      """
      batch_size = x.shape[0]
      assert batch_size == y.shape[0]
  
      var_x_ = x.reshape(batch_size, 1, -1)
      var_y_ = y.reshape(batch_size, -1, 1)
  
      result = np.matmul(var_x_, var_y_).reshape(batch_size)
  
      return result
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, TYPE_CHECKING
  import numpy
  from scipy.special import lambertw
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin
  from art.estimators.classification.classifier import ClassifierMixin
  from art.attacks.attack import EvasionAttack
  from art.utils import get_labels_np_array, check_and_transform_label_format
label_desc: Use image node_id 10 for calling the Wasserstein obj's underlying member method code with example usage: obj._batch_dot(x, y) and returns: result