Pytorch 官方文档:https://pytorch.org/docs/master/generated/torch.roll.htmlhttps://pytorch.org/docs/master/generated/torch.roll.html
官方案例:
>>> import torch
>>> x=torch.tensor([1,2,3,4,5,6,7,8]).view(4,2)
>>> x
tensor([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
>>> torch.roll(x,shifts=1,dims=0)
tensor([[7, 8],
[1, 2],
[3, 4],
[5, 6]])
>>> torch.roll(x,shifts=-1,dims=0)
tensor([[3, 4],
[5, 6],
[7, 8],
[1, 2]])
>>> torch.roll(x,shifts=(2,1),dims=(0,1))
tensor([[6, 5],
[8, 7],
[2, 1],
[4, 3]])
>>>
>>> import torch
>>> x=torch.arange(1,17).view(4,4)
>>> x
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> y=torch.roll(x,shifts=-1,dims=0)
>>> y
tensor([[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16],
[ 1, 2, 3, 4]])
>>> z=torch.roll(y,shifts=-1,dims=1)
>>> z
tensor([[ 6, 7, 8, 5],
[10, 11, 12, 9],
[14, 15, 16, 13],
[ 2, 3, 4, 1]])
>>>
测试图片代码及效果:
from PIL import Image as Image
import torch
import torchvision.transforms.functional as T
import torch.nn.functional as F
import numpy as np
from torchvision import transforms
import matplotlib.pyplot as plt
path = r'C:\Users\Administrator\Desktop\Pytorch\downsample\image\1.jpg'
# 显示图片
unloader = transforms.ToPILImage() # reconvert into PIL image
def imshow(tensor, title=None):
plt.figure()
image = tensor.cpu().clone() # we clone the tensor to not do changes on it
image = image.squeeze(0) # remove the fake batch dimension
image = unloader(image)
plt.imshow(image)
if title is not None:
plt.title(title)
plt.show()
if __name__ == '__main__':
image = Image.open(path)
img = T.to_tensor(image)
print(img.shape)
x = img.unsqueeze(0)
print(x.shape)
imshow(x, title='Image_1')
y = torch.roll(x, shifts=-1000, dims=3)
imshow(y, title='')
z = torch.roll(x, shifts=1000, dims=2)
imshow(z, title='')