Closed ramdhan1989 closed 6 months ago
The dataloader should return batches with type tuple[list[Tensor], Tensor]
. Tensor
are the targets/labels of the images and list[Tensor]
contains the different augmented views of the images. Every Tensor
in list[Tensor]
is one view of the batch.
I believe you have to change the iteration code over the dataloader slightly. This might work:
for batch in tqdm(dataloader): # batch is a tuple[list[Tensor], Tensor]
views_and_grids = batch[0]. # views_and_grids is a list[Tensor]
views_and_grids = [x.to(device) for x in views_and_grids]
I'll close this for now, please reopen if you encounter more issues.
Hi I got this error when following ViCRegL tutorial, I think it was coming from dataloader with error as follow? I used my own dataset. I wonder how the correct folder structure for this model?
`Starting Training 0%| | 0/255 [00:27<?, ?it/s]
AttributeError Traceback (most recent call last) Cell In[5], line 5 3 total_loss = 0 4 for views_and_grids in tqdm(dataloader): ----> 5 views_and_grids = [x.to(device) for x in views_and_grids] 6 views = views_and_grids[: len(views_and_grids) // 2] 7 grids = views_and_grids[len(views_and_grids) // 2 :]
Cell In[5], line 5, in(.0)
3 total_loss = 0
4 for views_and_grids in tqdm(dataloader):
----> 5 views_and_grids = [x.to(device) for x in views_and_grids]
6 views = views_and_grids[: len(views_and_grids) // 2]
7 grids = views_and_grids[len(views_and_grids) // 2 :]
AttributeError: 'list' object has no attribute 'to'`
and this is my dataloader
`transform = VICRegLTransform(n_local_views=0) path = 'D:/xxx/images/'
dataset = data.LightlyDataset(path, transform=transform)
dataloader = torch.utils.data.DataLoader( dataset, batch_size=256, shuffle=True, drop_last=True, num_workers=8, )`
inside folder "images" there is another one folder containing images
Thank you