我試圖在每次迭代時打印圖像名稱。但是,我收到錯誤 TypeError: 'ToTensor' object is not iterable。請告訴我我要去哪里?非常感謝from torchvision import datasetsimport torch.utils.datafrom torch.utils.data import DataLoaderfrom torchvision import transformsfrom dataset2 import CellsDatasetfrom torchvision import datasetsimport torchimport torchvisionimport torchvision.transforms as transformsclass ImageFolderWithPaths(datasets.ImageFolder): """Custom dataset that includes image file paths. Extends torchvision.datasets.ImageFolder """# override the __getitem__ method. this is the method that dataloader callsdef __getitem__(self, index): # this is what ImageFolder normally returns original_tuple = super(ImageFolderWithPaths, self).__getitem__(index) # the image file path path = self.imgs[index][0] # make a new tuple that includes original and the path tuple_with_path = (original_tuple + (path,)) return tuple_with_path# EXAMPLE USAGE:# instantiate the dataset and dataloaderdata_dir = "/Users/nubstech/Documents/GitHub/CellCountingDirectCount/Eddata/"dataset = ImageFolderWithPaths(data_dir) # our custom dataset#dataloader = DataLoader(dataset)transform = transforms.Compose([ # you can add other transformations in this list transforms.ToTensor()])dataset = DataLoader(data_dir, transforms.Compose(transforms.ToTensor()))dataloader = torch.utils.DataLoader(dataset)# iterate over datafor inputs, labels, paths in dataloader: # use the above variables freely print(inputs, labels, paths)
1 回答

MMMHUHU
TA貢獻1834條經驗 獲得超8個贊
這是因為transforms.Compose()
需要是一個列表(可能也接受了其他一些迭代)。問題在這里:
dataset = DataLoader(data_dir, transforms.Compose(transforms.ToTensor()))
嘗試:
transforms = transforms.Compose([transforms.ToTensor()])
這將創建一個可調用對象,您可以在其中傳遞數據。
添加回答
舉報
0/150
提交
取消