let me take a 2D matrix as example:
mat = torch.arange(9).view(3, -1)
tensor([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
torch.sum(mat, dim=-2)
tensor([ 9, 12, 15])
I find the result of torch.sum(mat, dim=-2)
is equal to torch.sum(mat, dim=0)
and dim=-1
equal to dim=1
. My question is how to understand the negative dimension here. What if the input matrix has 3 or more dimensions?
The minus essentially means you go backwards through the dimensions. Let A be a n-dimensional matrix. Then dim=n=-1, dim=n-1=-2,...,dim=1=-(n-1),dim=0=-n. See the numpy doc for more information, as pytorch is heavily based on numpy.
So, a tensor have multiple dimensions, ordered as in the following figure. This is a forward indexing, but there is a backward one. For backward indexing a minus is used. For example:
-1 will the last one, in our case it will be dim=2
-2 will be dim=-1
-3 will be dim=0