I have a tensor with a size of
3 x 240 x 320 and I want to use a window (window size
ws=5) to slide over each pixel and crop out the sub-tensor centered at that pixel. The final output dimension should be
3 x ws x ws x 240 x 320. So I pad the original tensor with window size and use
for loop to do so.
import torch.nn.functional as F image = torch.randn(1, 3, 240, 320) image = F.pad(image, (ws // 2, ws // 2, ws // 2, ws // 2), mode='reflect') patches = torch.zeros(1, 3, ws, ws, 240, 320) for i in range(height): for j in range(width): patches[:, :, :, :, i, j] = image[:, :, i:i+ws, j:j+ws]
Are there any ways to do the cropping of each pixel at the sample time? Like without using the
for loop over each pixel? I feel like it’s pretty similar to
convolution operation but I can’t think of wats to crop efficiently. Thanks in advance!