我对步幅的理解是跳到轴的下一部分所需的步数。因此,如果您迈出了一大步,(3,1)您需要采取 3 步才能到达下一行,并采取 1 步才能到达下一列(假设第一个轴是行,第二个轴是列)。
然而,当我索引到一个 pytorch 张量时,b[1:, 1:]形状(3,3)从第一行和第一列截断,然后查询它的步幅,我得到(3,1)的不是(2,1).
为什么会这样?
import unittest
import torch
class TestChapter3(unittest.TestCase):
def setUp(self):
self.a = torch.tensor(list(range(9)))
self.b = self.a.view(3,3)
self.c = self.b[1:, 1:]
def test_index_of_view(self):
print(self.c)
self.assertEqual(self.c.size(), torch.Size([2, 2]))
self.assertEqual(self.c.storage_offset(), 4)
self.assertEqual(self.c.stride(), (2, 1)) # self.c.stride() is actually (3,1)
if __name__ == "__main__":
unittest.main()