| "torch.zeros()"      | Factory functions    |
+----------------------+----------------------+
Keeps input names
All pointwise unary functions follow this rule as well as some other
unary functions.


Check names: None


Propagate names: input tensor's names are propagated to the output.





x = torch.randn(3, 3, names=('N', 'C'))
x.abs().names
   ('N', 'C')



Removes dimensions
All reduction ops like "sum()" remove dimensions by reducing over the
desired dimensions. Other operations like "select()" and "squeeze()"
remove dimensions.
Wherever one can pass an integer dimension index to an operator, one
can also pass a dimension name. Functions that take lists of dimension
indices can also take in a list of dimension names.


Check names: If "dim" or "dims" is passed in as a list of names,
  check that those names exist in "self".


Propagate names: If the dimensions of the input tensor specified by

