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 > 0
:axis=0
向axis=1
,对应“高向宽”,即逆时针方向。
>>> x.rot90(k=1)
tensor([[2, 0],
[3, 1]])
k < 0
:axis=1
向axis=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))
平均值
在 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 > 0
:axis=0
向axis=1
,对应“高向宽”,即逆时针方向。>>> x.rot90(k=1) tensor([[2, 0], [3, 1]])
k < 0
:axis=1
向axis=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))
平均值