torch.rot90 旋转方向

Direction of rotation of torch.rot90

在 torch.rot90 的文档中指出

Rotation direction is from the first towards the second axis if k > 0, and from the second towards the first for k < 0.

但是说我们从0轴旋转到1轴,0轴旋转到1轴是顺时针还是逆时针? (因为它们都是 90 度旋转,如下图所示)

对我来说,在使用高度和宽度进行推理时,这些旋转更有意义。如果您将 axis=0 视为高度尺寸,将 axis=1 视为宽度尺寸。那么:

取一个简单的输入矩阵x:

>>> x
tensor([[0, 1],
        [2, 3]])
  • k > 0axis=0axis=1,对应“高向宽”,即逆时针方向。

    >>> x.rot90(k=1)
    tensor([[2, 0],
            [3, 1]])
    
  • k < 0axis=1axis=0,这次是“宽向高”,顺时针旋转。

    >>> x.rot90(k=-1)
    tensor([[1, 3],
            [0, 2]])
    

axis=0是指向下方的维度,而axis=1是指向右侧的维度。像这样可视化坐标轴:

---------> axis=1
|
|
|
\/
axis=0

此时k>0表示逆时针方向,k<0表示顺时针方向

因此,

>>> x = torch.arange(6).view(3, 2)
>>> x
tensor([[0, 1],
        [2, 3],
        [4, 5]])

>>> torch.rot90(x, 1, [0,1])
tensor([[1, 3, 5],
        [0, 2, 4]])

>>> torch.rot90(x, 1, [1,0])
tensor([[4, 2, 0],
        [5, 3, 1]])

torch.rot90()类似于numpy.rot90()

例如

numpy.rot90(m, k=1, axes=(0, 1))

平均值