torch.Tensor.expand
Tensor.expand(*sizes) -> Tensor
Returns a new view of the "self" tensor with singleton dimensions
   expanded to a larger size.
Passing -1 as the size for a dimension means not changing the size
   of that dimension.
Tensor can be also expanded to a larger number of dimensions, and
   the new ones will be appended at the front. For the new dimensions,
   the size cannot be set to -1.
Expanding a tensor does not allocate new memory, but only creates a
   new view on the existing tensor where a dimension of size one is
   expanded to a larger size by setting the "stride" to 0. Any
   dimension of size 1 can be expanded to an arbitrary value without
   allocating new memory.
Parameters:
      sizes (torch.Size or int...*) -- the desired
      expanded size
Warning:
 More than one element of an expanded tensor may refer to a single
 memory location. As a result, in-place operations (especially
