I might have made a mistake in converting the numpy arrays to tensors before querying the stride, because now I get stride=(1,1) for the shape=(1,3) case, which makes all the above examples consistent with each other if one sets the stride to 1 for every singleton dimension. The only thing I don’t really understand then is why for a singleton dimension the stride should be 1 instead of 0. Moving 1*8 forward in storage brings me to the next component in one of the other dimensions, instead of remaining where I am (because the singleton dimension has only size 1).