code: def _tensor_product(t1, t2):
      """Computes the outer product of two possibly batched vectors.
  
      Args:
        t1: A `tf.Tensor` of shape `[..., n]`.
        t2: A `tf.Tensor` of shape `[..., m]`.
  
      Returns:
        A tensor of shape `[..., n, m]` with matching batch dimensions, let's call
        it `r`, whose components are:
  
        ```None
          r[..., i, j] = t1[..., i] * t2[..., j]
        ```
      """
      return tf.linalg.matmul(
          t1[..., tf.newaxis], t2[..., tf.newaxis, :]
      )
  
file_path: probability/tensorflow_probability/python/optimizer/bfgs.py
imports: import collections
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.optimizer import bfgs_utils
label_desc: Use image node_id 6 for calling a global function with example usage: _tensor_product(t1, t2) and returns: tf