pytorch unfold记录

unfold就是只是输出窗口移动的内容,并不积。相当于把原图进行切分,沿着不同的维度。

et = x.unfold(dim, size, step)
dim:int,表示需要展开的维度(可以理解为窗口的方向)
size:int,表示滑动窗口大小
step:int,表示滑动窗口的步长

    import torch

    x = torch.Tensor([[  1,  2,  3,  4,  5],
                  [  6,  7,  8,  9, 10],
                  [ 11, 12, 13, 14, 15],
                  [ 16, 17, 18, 19, 20],
                  [ 21, 22, 23, 24, 25]])
    x = x.unfold(0, 3, 1)
    print(x)
    print(x.size())

    x = torch.Tensor([[  1,  2,  3,  4,  5],
                  [  6,  7,  8,  9, 10],
                  [ 11, 12, 13, 14, 15],
                  [ 16, 17, 18, 19, 20],
                  [ 21, 22, 23, 24, 25]])
    x = x.unfold(1, 3, 1)
    print(x)
    print(x.size())

result:

tensor([[[ 1.,  6., 11.],
         [ 2.,  7., 12.],
         [ 3.,  8., 13.],
         [ 4.,  9., 14.],
         [ 5., 10., 15.]],

        [[ 6., 11., 16.],
         [ 7., 12., 17.],
         [ 8., 13., 18.],
         [ 9., 14., 19.],
         [10., 15., 20.]],

        [[11., 16., 21.],
         [12., 17., 22.],
         [13., 18., 23.],
         [14., 19., 24.],
         [15., 20., 25.]]])
torch.Size([3, 5, 3])
tensor([[[ 1.,  2.,  3.],
         [ 2.,  3.,  4.],
         [ 3.,  4.,  5.]],

        [[ 6.,  7.,  8.],
         [ 7.,  8.,  9.],
         [ 8.,  9., 10.]],

        [[11., 12., 13.],
         [12., 13., 14.],
         [13., 14., 15.]],

        [[16., 17., 18.],
         [17., 18., 19.],
         [18., 19., 20.]],

        [[21., 22., 23.],
         [22., 23., 24.],
         [23., 24., 25.]]])
torch.Size([5, 3, 3])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pytorch中的unfold函数是一种图片的分块操作,它可以提取出卷积核滑过的元素,而不进行其他运算。使用unfold函数可以将卷积核滑动扫过的数据提取出来。通过给定的kernel_size和stride参数,unfold函数可以将输入的图片分割成多个块,并按照指定的顺序排列这些块中的像素值。在使用unfold函数之后,可以通过transpose函数对结果进行维度重排,以得到期望的输出形状。通过这种方式,可以方便地对图像进行分块处理,并用于后续的操作,如卷积运算或像ViT模型中的patch embedding操作。 在ViT模型中,patch embedding操作可以将图像的每个分块转换为一个嵌入向量。类似于使用unfold函数将图像分割成多个块,然后将每个块中的像素值转换为嵌入向量。这样就可以将图像中的像素信息转换为嵌入表示,用于后续的视觉任务。通过定义一个可学习的权重参数,可以自定义嵌入向量的维度和形状。使用unfold函数可以方便地实现这一操作,将图像分块并将像素值转换为嵌入向量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [[pytorch]unfold操作](https://blog.csdn.net/qq_41319370/article/details/125193360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值