14

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?

skydarkdark
  • 159
  • 1
  • 1
  • 5
  • 1
    Does this answer your question? [What is a dimensional range of \[-1,0\] in Pytorch?](https://stackoverflow.com/questions/59704538/what-is-a-dimensional-range-of-1-0-in-pytorch) – Shai Jan 12 '20 at 14:09

2 Answers2

28

A tensor has multiple dimensions, ordered as in the following figure. There is a forward and backward indexing. Forward indexing uses positive integers, backward indexing uses negative integers.

Example:

-1 will be the last one, in our case it will be dim=2

-2 will be dim=1

-3 will be dim=0

enter image description here

cristian hantig
  • 1,110
  • 1
  • 12
  • 16
12

The minus essentially means you go backwards through the dimensions. Let A be a n-dimensional matrix. Then dim=n-1=-1, dim=n-2=-2, ..., dim=1=-(n-1), dim=0=-n. See the numpy doc for more information, as pytorch is heavily based on numpy.

Simdi
  • 794
  • 4
  • 13