code: def test_vectorize_outer_inner_product(self):
      def func(x, y):
          return x[:, None] * y[None, :], (x * y).sum()
  
      vec_func = vectorize(func, signature="(a),(b)->(a,b),()")
  
      x = tensor("x", shape=(2, 3, 5))
      y = tensor("y", shape=(2, 3, 5))
      outer, inner = vec_func(x, y)
  
      assert outer.type.shape == (2, 3, 5, 5)
      assert inner.type.shape == (2, 3)
      assert equal_computations(
          [outer], [x[..., :, None] * y[..., None, :]]
      )
      assert equal_computations([inner], [(x * y).sum(axis=-1)])
  
file_path: pytensor/tests/tensor/test_functional.py
imports: import numpy
  import pytest
  from pytensor.graph.basic import equal_computations
  from pytensor.tensor import full, tensor
  from pytensor.tensor.functional import vectorize
  from pytensor.tensor.random.type import RandomGeneratorType
label_desc: Use image node_id 3 for calling the TestVectorize obj's underlying member method code with example usage: obj.test_vectorize_outer_inner_product() and returns: unknown,  unknown