Otherwise, "dim" is squeezed (see "torch.squeeze()"), resulting in
   the output tensor having 1 (or "len(dim)") fewer dimension(s).
Parameters:
      * input (Tensor) -- the input tensor.
  * **dim** (*int** or **tuple of ints**, **optional*) -- the
    dimension or dimensions to reduce. If "None", all dimensions
    are reduced.

  * **keepdim** (*bool*) -- whether the output tensor has "dim"
    retained or not.

Keyword Arguments:
      dtype ("torch.dtype", optional) -- the desired data type of
      returned tensor. If specified, the input tensor is casted to
      "dtype" before the operation is performed. This is useful for
      preventing data type overflows. Default: None.
Example:
  >>> a = torch.randn(4, 4)
  >>> a
  tensor([[ 0.0569, -0.2475,  0.0737, -0.3429],
          [-0.2993,  0.9138,  0.9337, -1.6864],
          [ 0.1132,  0.7892, -0.1003,  0.5688],
          [ 0.3637, -0.9906, -0.4752, -1.5197]])
