torch.roll 函数的理解

43 篇文章 6 订阅
32 篇文章 4 订阅

torch.roll 函数的理解:
看这个函数的大多应该是从swin transform来的吧,废话不多说:
https://blog.csdn.net/weixin_42899627/article/details/116095067
我觉得直接看这个博客就很好了,不过还是总结一下吧:
torch.roll(input, shifts, dims=None)
torch.roll(x, shifts=(2, 1), dims=(0, 1))
tensor([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
结果就是:
tensor([[6, 5],
[8, 7],
[2, 1],
[4, 3]])
dims=(0, 1) 这个意思就是第0行 1是第一列 然后去和shifts=(2, 1)对应一下, 就是第0行的下移2 第一列的右移动1 就和挤牙膏一样,首先[1, 2] 被动的从0行下移动到 [5, 6]的这个位置,剩下的 1 2 , 3 4,7 8, 都往下移动,然后在加上第一列的往右移动1,最后变成:
tensor([******,
[3, 4],
[1,2],
[7, 8]])

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

在swin源码中:

reverse cyclic shift

    if self.shift_size > 0:
        x = torch.roll(shifted_x, shifts=(self.shift_size, self.shift_size), dims=(1, 2))
    else:
        x = shifted_x

不得不说代码真难懂,数学能力真的好强啊、。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zqx951102

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值