pytorch中torch.roll用法说明

torch.roll(input, shifts, dims=None) 

这个函数是用来移位的,是顺移。input是咱们要移动的tensor向量,shifts是要移动到的位置,要移动去哪儿,dims是值在什么方向上(维度)去移动。比如2维的数据,那就两个方向,横着或者竖着。最关键的一句话,所有操作针对的是第一行或者第一列,下面举例子给大家做解释,自己慢慢体会

import torch

x = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8, 9]).view(3, 3)
print("")
print(x)

y = torch.roll(x, 1, 0)
print("")
print(y)

输出:
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

tensor([[7, 8, 9],
        [1, 2, 3],
        [4, 5, 6]])

torch.roll(x, 1, 0) 这行代码的意思就是把x的第一行(0维度)移到1这个位置上,其他位置的数据顺移。
x——咱们要移动的向量
1——第一行向量要移动到的最终位置
0——从行的角度去移动

import torch

x = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8, 9]).view(3, 3)
print("")
print(x)

y = torch.roll(x, -1, 1)
print("")
print(y)

输出:
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

tensor([[2, 3, 1],
        [5, 6, 4],
        [8, 9, 7]])

torch.roll(x, -1, 1) 意思就是把x的第一列(1维度)移到-1这个位置(最后一个位置)上,其他位置的数据顺移。

shifts和dims可以是元组,其实就是分步骤去移动

import torch

x = torch.tensor([1, 2, 3, 4, 5, 6, 7, 8, 9]).view(3, 3)
print("")
print(x)

y = torch.roll(x, (0,1), (1,1))
print("")
print(y)

输出:

tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

tensor([[3, 1, 2],
        [6, 4, 5],
        [9, 7, 8]])

torch.roll(x, (0,1), (1,1)) :
首先,针对元组第一个元素,把x的第一列(1维度)移到0这个位置(已经在0这个位置,因此原地不动)上,其他位置的数据顺移。(所有数据原地不动)

然后,针对元组第二个元素,把a的第一列(1维度)移到1这个位置上,其他位置的数据顺移。

相关推荐

  1. pytorchunsqueeze用法说明

    2024-04-21 10:18:05       37 阅读
  2. PyTorchview()函数用法说明

    2024-04-21 10:18:05       39 阅读
  3. pytorchtorch.roll用法说明

    2024-04-21 10:18:05       37 阅读
  4. PyTorchnn.ReLU函数说明

    2024-04-21 10:18:05       42 阅读
  5. PyTorch的flatten+transpose函数说明

    2024-04-21 10:18:05       46 阅读
  6. pytorch nn.ModuleList()使用说明

    2024-04-21 10:18:05       41 阅读
  7. Pytorch实用教程:pytorch argmax(dim)用法详解

    2024-04-21 10:18:05       31 阅读
  8. pytorchnn.GroupNorm()作用及参数说明

    2024-04-21 10:18:05       48 阅读
  9. rpn网络rpnhead的回归框解码说明(pytorch)

    2024-04-21 10:18:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 10:18:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 10:18:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 10:18:05       87 阅读
  4. Python语言-面向对象

    2024-04-21 10:18:05       96 阅读

热门阅读

  1. web server apache tomcat11-03-deploy 如何部署

    2024-04-21 10:18:05       39 阅读
  2. 如何防止重复下单

    2024-04-21 10:18:05       40 阅读
  3. 【基础】伐木工

    2024-04-21 10:18:05       36 阅读
  4. 【无标题】

    2024-04-21 10:18:05       37 阅读
  5. Docker

    2024-04-21 10:18:05       35 阅读