【问题标题】:Fixing error img should be PIL Image. Got <class 'torch.Tensor'>修复错误 img 应该是 PIL Image。得到 <class 'torch.Tensor'>
【发布时间】:2021-01-26 22:33:06
【问题描述】:

我尝试创建自定义数据集,但在显示某些图像时出现错误。这是我的数据集类和转换:

transforms = transforms.Compose([transforms.Resize(224,224)])

class MyDataset(Dataset):
    def __init__(self, path, label,  transform=None):
        self.path = glob.glob(os.path.join(path, '*.jpg'))
        self.transform = transform
        self.label = label

    def __getitem__(self, index):
        img = io.imread(self.path[index])
        img = torch.tensor(img)
        labels = torch.tensor(int(self.label))
        if self.transform:
          img = self.transform(img)
        return (img,labels)
    
    def __len__(self):
        return len(self.path)

这里是错误行:

images, labels = next(iter(train_loader))

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    transforms.Resize 需要 PIL.Image 实例为 input 而您的 imgtorch.Tensor

    这将解决您的问题(请参阅源代码中的 cmets):

    import torchvision
    from PIL import Image
    
    # In your transform you should cast PIL Image to tensor
    # When no transforms on PIL Image are needed anymore
    transforms = transforms.Compose([transforms.Resize(224, 224), transforms.ToTensor()])
    
    
    class MyDataset(Dataset):
        def __init__(self, path, label, transform=None):
            self.path = glob.glob(os.path.join(path, "*.jpg"))
            self.transform = transform
            self.label = label
    
        def __getitem__(self, index):
            img = Image.open(self.path[index])
            labels = torch.tensor(int(self.label))
            if self.transform is not None:
                # Now you have PIL.Image instance for transforms
                img = self.transform(img)
            return (img, labels)
    
        def __len__(self):
            return len(self.path)
    

    【讨论】:

    • @TrọngVăn 在 StackOverflow 上,我们不会对答案说“谢谢”。如果你想感谢作者,你可以投票给答案。很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2021-06-24
    • 1970-01-01
    • 2020-11-05
    • 2019-11-06
    相关资源
    最近更新 更多