class_docstr: Layer that computes a dot product between samples in two tensors.
  
  E.g. if applied to a list of two tensors `a` and `b` of shape
  `(batch_size, n)`, the output will be a tensor of shape `(batch_size, 1)`
  where each entry `i` will be the dot product between
  `a[i]` and `b[i]`.
  
  >>> x = np.arange(10).reshape(1, 5, 2)
  >>> print(x)
  [[[0 1]
    [2 3]
    [4 5]
    [6 7]
    [8 9]]]
  >>> y = np.arange(10, 20).reshape(1, 2, 5)
  >>> print(y)
  [[[10 11 12 13 14]
    [15 16 17 18 19]]]
  >>> tf.keras.layers.Dot(axes=(1, 2))([x, y])
  <tf.Tensor: shape=(1, 2, 2), dtype=int64, numpy=
  array([[[260, 360],
          [320, 445]]])>
  
  >>> x1 = tf.keras.layers.Dense(8)(np.arange(10).reshape(5, 2))
  >>> x2 = tf.keras.layers.Dense(8)(np.arange(10, 20).reshape(5, 2))
  >>> dotted = tf.keras.layers.Dot(axes=1)([x1, x2])
  >>> dotted.shape
  TensorShape([5, 1])
code: def _merge_function(self, inputs):
      base_layer_utils.no_ragged_support(inputs, self.name)
      if len(inputs) != 2:
          raise ValueError(
              "A `Dot` layer should be called on exactly 2 inputs"
          )
      x1 = inputs[0]
      x2 = inputs[1]
      if isinstance(self.axes, int):
          if self.axes < 0:
              axes = [
                  self.axes % backend.ndim(x1),
                  self.axes % backend.ndim(x2),
              ]
          else:
              axes = [self.axes] * 2
      else:
          axes = []
          for i in range(len(self.axes)):
              if self.axes[i] < 0:
                  axes.append(self.axes[i] % backend.ndim(inputs[i]))
              else:
                  axes.append(self.axes[i])
      if self.normalize:
          x1 = nn.l2_normalize(x1, axis=axes[0])
          x2 = nn.l2_normalize(x2, axis=axes[1])
      output = backend.batch_dot(x1, x2, axes)
      return output
  
imports: from tensorflow.python.keras import backend
  from tensorflow.python.keras.engine import base_layer_utils
  from tensorflow.python.keras.engine.base_layer import Layer
  from tensorflow.python.keras.utils import tf_utils
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import array_ops_stack
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn
label_desc: Use image node_id 3 for calling the Dot obj's underlying member method code with example usage: obj._merge_function(inputs) and returns: output