【发布时间】:2021-09-30 06:01:01
【问题描述】:
在 torch.rot90 的文档中指出
如果k > 0,旋转方向是从第一个到第二个轴,如果k
但是说我们从轴 0 旋转到轴 1,轴 0 是顺时针还是逆时针方向旋转到轴 1? (因为它们都是 90 度旋转,如下图所示)
【问题讨论】:
标签: python pytorch rotation torch
在 torch.rot90 的文档中指出
如果k > 0,旋转方向是从第一个到第二个轴,如果k
但是说我们从轴 0 旋转到轴 1,轴 0 是顺时针还是逆时针方向旋转到轴 1? (因为它们都是 90 度旋转,如下图所示)
【问题讨论】:
标签: python pytorch rotation torch
对我来说,在使用高度和宽度进行推理时,这些旋转更有意义。如果您将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
因此,
>>> 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))
意思
【讨论】: