torch.cartesian_prod
torch.cartesian_prod(*tensors)
Do cartesian product of the given sequence of tensors. The behavior
   is similar to python's itertools.product.
Parameters:
      tensors (Tensor*) -- any number of 1 dimensional tensors.
Returns:
      A tensor equivalent to converting all the input tensors into
      lists, do itertools.product on these lists, and finally
      convert the resulting list into tensor.
Return type:
      Tensor
Example:
  >>> import itertools
  >>> a = [1, 2, 3]
  >>> b = [4, 5]
  >>> list(itertools.product(a, b))
  [(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)]
  >>> tensor_a = torch.tensor(a)
  >>> tensor_b = torch.tensor(b)
  >>> torch.cartesian_prod(tensor_a, tensor_b)
  tensor([[1, 4],
          [1, 5],
          [2, 4],
          [2, 5],
          [3, 4],
          [3, 5]])
