names and then perform the addition. Use "Tensor.align_as()" to
  align tensors by name or "Tensor.align_to()" to align tensors to a
  custom dimension ordering.
Permutes dimensions
Some operations, like "Tensor.t()", permute the order of dimensions.
Dimension names are attached to individual dimensions so they get
permuted as well.
If the operator takes in positional index "dim", it is also able to
take a dimension name as "dim".


Check names: If "dim" is passed as a name, check that it exists in
  the tensor.


Propagate names: Permute dimension names in the same way as the
  dimensions that are being permuted.





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



Contracts away dims
Matrix multiply functions follow some variant of this. Let's go
through "torch.mm()" first and then generalize the rule for batch
matrix multiplication.
For "torch.mm(tensor, other)":

Check names: None
