Hi,
I am getting this error which I understand why is happening but I don’t know how to fix it.
I am using a custom dataset to load images from a directory:
class DiffPatternsDataSet(Dataset):
def __init__(self, main_dir):
self.main_dir = main_dir
self.all_imgs = os.listdir(main_dir)
def __len__(self):
return len(self.all_imgs)
def __getitem__(self, idx):
if torch.is_tensor(idx):
idx = idx.tolist()
img_loc = os.path.join(self.main_dir, self.all_imgs[idx])
image = torch.from_numpy(np.genfromtxt(img_loc)).unsqueeze(0)
filename = self.all_imgs[idx]
tiles = split_pattern(image, tile_size=80, stride=2)
return tiles, filename
The split_pattern function basically splits an image using the Unfold function, then eliminates the patches that contain only white noise. Therefore, for each image I get a tiles tensor of dimension (#tiles, channels, width, height) and the number of tiles is different depending on the image. So when I use the loader, it wants to do a torch.stack and finds tensors of different dimensions.
Is there any solution for this? Maybe I am not approaching the problem correctly. I want to train my model with the tiles I get from the images (plus each tile needs to have the original image filename attached). Maybe I should do things differently in the getitem?
Any help or input will be greatly appreciated!