簡體   English   中英

將滑動 window 應用到 torch.tensor 並調整張量初始大小

[英]Appling sliding window to torch.tensor and adjusting tensor initial size

尋找更簡單的 torch.tensor 修改方式。 可能有一種方法可以直接將展開應用於初始張量。

輸入:

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

output:

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

可能的解決方案:

import torch

t = torch.linspace(0., 8., steps=9)

t1 = t.reshape(3,3) # starting point

t2 = torch.flatten(t1)

t3 = t2.reshape(1, 1, 1, -1) # unfold works with 4D only

unfold = torch.nn.Unfold(kernel_size=(1, 5), dilation=1)

t4 = unfold(t3)

indices = torch.tensor([0, 1, 3, 4]) # deleting 3d (or middle) row and 3d (middle) column

t5 = torch.index_select(torch.index_select(t4.squeeze(), 0, indices), 1, indices)

t5

您可以使用unfold ,但以更簡單的方式:

import torch
import torch.nn.functional as nnf

t1 = torch.arange(9.).reshape(3,3)  # initial tensor
out = nnf.unfold(t1[None, None, ...], kernel_size=2, padding=0)  # that's it. done.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM