torch.broadcast_shapes
torch.broadcast_shapes(*shapes) -> Size
Similar to "broadcast_tensors()" but for shapes.
This is equivalent to "torch.broadcast_tensors(*map(torch.empty,
   shapes))[0].shape" but avoids the need create to intermediate
   tensors. This is useful for broadcasting tensors of common batch
   shape but different rightmost shape, e.g. to broadcast mean vectors
   with covariance matrices.
Example:
  >>> torch.broadcast_shapes((2,), (3, 1), (1, 1, 1))
  torch.Size([1, 3, 2])

Parameters:
      shapes (torch.Size*) -- Shapes of tensors.
Returns:
      A shape compatible with all input shapes.
Return type:
      shape (torch.Size)
Raises:
      RuntimeError -- If shapes are incompatible.