raise TypeError(f"img should be Tensor Image. Got {type(tensor)}")

问题描述 投票:0回答:0

我正在编写一个 pytorch 代码来根据目标变量进行分层拆分,方法是将图像数据加载到一个文件夹中,每个文件夹都包含类。

imageSize = 224
train_transforms = transforms.Compose([transforms.Resize((imageSize, imageSize)),
                                               transforms.Normalize(
                                                   mean=[0.485, 0.456, 0.406],
                                                   std=[0.229, 0.224, 0.225]
                                               ),
                                               transforms.ToTensor(),
                                               # transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
                                               ])
        
train_set = datasets.ImageFolder(path, transform=train_transforms)
 
num_train = len(train_set) train_idx_, test_idx = train_test_split(np.arange(len(train_set.targets)),
                                                     test_size=0.2,
                                                     random_state=999,
                                                     shuffle=True,
                                                     stratify=train_set.targets) train_dataset_ = torch.utils.data.Subset(train_set, train_idx_) Test_dataset = torch.utils.data.Subset(train_set, test_idx)
        
train_idx, val_idx = train_test_split(np.arange(len(train_dataset_.dataset.targets)),
                                                     test_size=0.15,
                                                     random_state=999,
                                                     shuffle=True,
                                                     stratify=train_dataset_.dataset.targets) Train_dataset = torch.utils.data.Subset(train_dataset_, train_idx) Valid_dataset = torch.utils.data.Subset(train_dataset_, val_idx)
        
second_transform = transforms.Compose([transforms.PILToTensor()])
        
class MyDataset(Dataset):
  def __init__(self, subset, transform=None):
     self.subset = subset
     self.transform = transform
        
  def __getitem__(self, index):
     x, y = self.subset[index]
     if self.transform:
        x = self.transform(x)
     return x, y
        
  def __len__(self):
     return len(self.subset)
        
        
train_dataset = MyDataset(Train_dataset, transform= second_transform) valid_dataset = MyDataset(Valid_dataset, transform= second_transform) test_dataset = MyDataset(Test_dataset, transform= second_transform)
        
train_loader = DataLoader(train_dataset, batch_size=20) 
valid_loader = DataLoader(valid_dataset, batch_size=20) 
test_loader = DataLoader(test_dataset, batch_size=20)
        
images, labels = next(iter(train_loader))

这给出了以下错误:

我添加了

second_transform = transforms.Compose([transforms.PILToTensor()])

在类似错误“expects Tensor Image but PIL Image was found”之后。 请帮助。

python pytorch torchvision
© www.soinside.com 2019 - 2024. All rights reserved.