PyTorch doesn’t seem to have documentation for tensor.stride()
.
Can someone confirm my understanding?
My questions are three-fold.
-
Stride is for accessing an element in the storage. So stride size will be the same as the dimension of the tensor. Correct?
-
For each dimension, the corresponding element of stride tells how much it takes to move along the 1-dimensional storage.
For example:
In [15]: x = torch.arange(1,25)
In [16]: x
Out[16]:
tensor([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
, 19, 20, 21, 22, 23, 24])
In [17]: a = x.view(4,3,2)
In [18]: a
Out[18]:
tensor([[[ 1, 2],
[ 3, 4],
[ 5, 6]],
[[ 7, 8],
[ 9, 10],
[11, 12]],
[[13, 14],
[15, 16],
[17, 18]],
[[19, 20],
[21, 22],
[23, 24]]])
In [20]: a.stride()
Out[20]: (6, 2, 1)
- How does having this information help perform tensor operations efficiently? Basically this is showing the memory layout. So how does it help?