Python 火炬视觉';RandomRotation()正在将图像张量归零

Python 火炬视觉';RandomRotation()正在将图像张量归零,python,pytorch,python-imaging-library,torchvision,Python,Pytorch,Python Imaging Library,Torchvision,每次我使用torchvision.transforms.randomrotostation和torchvision.transforms.ToTensor时,我都会得到一个零输出图像张量。 例如,如果我在图像上运行此操作: import sys from PIL import Image from torchvision import transforms ROTATION_TRANSFORM = transforms.Compose([ transforms.RandomRotat

每次我使用
torchvision.transforms.randomrotostation
torchvision.transforms.ToTensor
时,我都会得到一个零输出图像张量。 例如,如果我在图像上运行此操作:

import sys
from PIL import Image
from torchvision import  transforms

ROTATION_TRANSFORM = transforms.Compose([
    transforms.RandomRotation(30),
    transforms.ToTensor(),
])

NO_ROTATION_TRANSFORM = transforms.Compose([
    transforms.ToTensor(),
])

image = Image.open(sys.argv[1])
rotated_image_tensor = ROTATION_TRANSFORM(image)
image_tensor = NO_ROTATION_TRANSFORM(image)

print(rotated_image_tensor)
print(image_tensor)
我得到这个结果:

tensor([[[0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         ...,
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.]],

        [[0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         ...,
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.]],

        [[0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         ...,
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.],
         [0., 0., 0.,  ..., 0., 0., 0.]]])
tensor([[[0.5255, 0.5294, 0.5333,  ..., 0.4902, 0.4980, 0.4980],
         [0.5255, 0.5255, 0.5333,  ..., 0.4863, 0.4941, 0.4941],
         [0.5216, 0.5255, 0.5294,  ..., 0.4784, 0.4863, 0.4863],
         ...,
         [0.6275, 0.6353, 0.6471,  ..., 0.6275, 0.6431, 0.6510],
         [0.6196, 0.6275, 0.6431,  ..., 0.6549, 0.6471, 0.6392],
         [0.6392, 0.6471, 0.6549,  ..., 0.6667, 0.6431, 0.6275]],

        [[0.5255, 0.5294, 0.5333,  ..., 0.5216, 0.5294, 0.5294],
         [0.5255, 0.5255, 0.5333,  ..., 0.5176, 0.5255, 0.5255],
         [0.5216, 0.5255, 0.5294,  ..., 0.5098, 0.5176, 0.5176],
         ...,
         [0.6039, 0.6118, 0.6235,  ..., 0.6196, 0.6353, 0.6431],
         [0.5961, 0.6039, 0.6196,  ..., 0.6471, 0.6392, 0.6314],
         [0.6157, 0.6235, 0.6314,  ..., 0.6588, 0.6353, 0.6196]],

        [[0.5333, 0.5373, 0.5412,  ..., 0.5333, 0.5412, 0.5412],
         [0.5333, 0.5333, 0.5412,  ..., 0.5294, 0.5373, 0.5373],
         [0.5294, 0.5333, 0.5373,  ..., 0.5216, 0.5294, 0.5294],
         ...,
         [0.5569, 0.5647, 0.5765,  ..., 0.5725, 0.5882, 0.5961],
         [0.5490, 0.5569, 0.5725,  ..., 0.6000, 0.5922, 0.5843],
         [0.5686, 0.5765, 0.5843,  ..., 0.6118, 0.5882, 0.5725]]])
图像张量不是因为旋转而丢失了信息吗?为什么它会被归零?我怎样才能防止呢


我还注意到,当随机旋转的数量减少时,结果是最后剧烈的。例如,当我使用
RandomRotation(10)
时,我仍然可以看到零,但看到的零更少。我试图使用
RandomRotation
来增加分类器的训练图像,但我觉得图像张量的归零严重损害了我的数据。

您正在旋转图像,因此当图像变大时会出现黑色背景。尝试随机旋转(1)您正在旋转图像,因此当图像超出尺寸时,将出现黑色背景。尝试随机旋转(1)