【问题标题】:pic should be PIL Image or ndarray. Got <class 'tuple'>pic 应该是 PIL Image 或 ndarray。得到 <class 'tuple'>
【发布时间】:2021-06-24 12:21:50
【问题描述】:

我正在尝试下载 cifar10 图像并将其放入数据加载器中,但是出现了问题 'pic 应该是 PIL Image 或 ndarray。 Got ' 不断发生。请帮帮我。

transform_list={'train':transforms.Compose([transforms.Resize(256),
                                           transforms.RandomHorizontalFlip(),
                                           transforms.FiveCrop(size=224),
                                           transforms.ToTensor(),
                                           transforms.Normalize(mean=(0.5,0.5,0.5), std=(0.5,0.5,0.5))]),
               'test':transforms.Compose([transforms.Resize(224),
                                          transforms.ToTensor(),
                                          transforms.Normalize(mean=(0.5,0.5,0.5), std=(0.5,0.5,0.5))])}
    cifar10_train=torchvision.datasets.CIFAR10(root='./data',train=True,download=True,transform=transform_list['train'])
    cifar10_test=torchvision.datasets.CIFAR10(root='./data',train=False,download=True,transform=transform_list['test'])
    trainloader = torch.utils.data.DataLoader(cifar10_train, batch_size=128,
                                             shuffle=True)
    testloader = torch.utils.data.DataLoader(cifar10_test, batch_size=128,
                                             shuffle=True)
    
    print(cifar10_train)
    print(cifar10_train[0])

错误

TypeError                                 Traceback (most recent call last)
<ipython-input-25-03a0afd731d1> in <module>()
     15 
     16 print(cifar10_train)
---> 17 print(cifar10_train[0])

3 frames
/usr/local/lib/python3.7/dist-packages/torchvision/transforms/functional.py in to_tensor(pic)
    100     """
    101     if not(F_pil._is_pil_image(pic) or _is_numpy(pic)):
--> 102         raise TypeError('pic should be PIL Image or ndarray. Got {}'.format(type(pic)))
    103 
    104     if _is_numpy(pic) and not _is_numpy_image(pic):

TypeError: pic should be PIL Image or ndarray. Got <class 'tuple'>

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    这个错误的原因是使用FiveCrop()。因为它给出了一个图像数组的元组。 为了解决这个问题,使用Lambda 来规范化元组的每个元素。试试这个 sn-p 来解决问题:

    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Resize((256, 256)),
        transforms.RandomHorizontalFlip(),
        transforms.FiveCrop((224, 224)),
        transforms.Lambda(lambda crops: torch.stack([transforms.Normalize(mean, std)(crop) for crop in crops]))    
    ])
    

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 2019-11-06
      • 1970-01-01
      • 2021-11-04
      • 2021-07-06
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      相关资源
      最近更新 更多