This method is equivalent to do a serie of
narrow up to the first 4 dimensions. It returns
a new Tensor which is a sub-tensor going from index dimis to dimie in
the =i=-th dimension. Negative values are interpreted index starting from the end:
-1 is the last index, -2 is the index before the last index, ...
> x = torch.Tensor(5, 6):zero()
> print(x)
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
[torch.Tensor of dimension 5x6]
> y = x:sub(2,4):fill(1) -- y is sub-tensor of x:
> print(y) -- dimension 1 starts at index 2, ends at index 4
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
[torch.Tensor of dimension 3x6]
> print(x) -- x has been modified!
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
0 0 0 0 0 0
[torch.Tensor of dimension 5x6]
> z = x:sub(2,4,3,4):fill(2) -- we now take a new sub-tensor
> print(z) -- dimension 1 starts at index 2, ends at index 4
-- dimension 2 starts at index 3, ends at index 4
2 2
2 2
2 2
[torch.Tensor of dimension 3x2]
> print(x) -- x has been modified
0 0 0 0 0 0
1 1 2 2 1 1
1 1 2 2 1 1
1 1 2 2 1 1
0 0 0 0 0 0
[torch.Tensor of dimension 5x6]
> print(y:sub(-1, -1, 3, 4)) -- negative values = bounds
2 2
[torch.Tensor of dimension 1x2]