【问题标题】:Direction of rotation of torch.rot90torch.rot90 的旋转方向
【发布时间】:2021-09-30 06:01:01
【问题描述】:

在 torch.rot90 的文档中指出

如果k > 0,旋转方向是从第一个到第二个轴,如果k

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

【问题讨论】:

    标签: python pytorch rotation torch


    【解决方案1】:

    对我来说,在使用高度和宽度进行推理时,这些旋转更有意义。如果您将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 < 0axis=1 朝向axis=0,这次是“宽度朝向高度,顺时针旋转。

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

    【讨论】:

      【解决方案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))

      意思

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 2011-07-02
        • 2011-02-25
        • 1970-01-01
        • 2018-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多