jramapuram / BYOL

Bootstrap Your Own Latent (BYOL) pytorch implementation using DistributedDataParallel.
MIT License
28 stars 2 forks source link

Problem using Cifar10 #3

Open AlexanderBartler opened 4 years ago

AlexanderBartler commented 4 years ago

Hi, I tried to run your implementation of BYOL for Cifar10. I used the following command to run the training (using my own environment):

python main.py --batch-size=16 --epochs=1 --num-replicas=1 --task=cifar10

An error occurs since it cannot unpack 2 values into 3. Here is the error traceback:

dataset loader: {'num_workers': 2, 'pin_memory': True, 'worker_init_fn': None, 'timeout': 0, 'drop_last': True} train = 50000 | test = 10000 | valid = 0 derived image shape = [3, 224, 224] Traceback (most recent call last): File "main.py", line 814, in <module> run(rank=0, args=args) File "main.py", line 742, in run loader, model, grapher = build_loader_model_grapher(args) # build the model, loader and grapher File "main.py", line 435, in build_loader_model_grapher lazy_generate_modules(network, loader.train_loader) File "main.py", line 475, in lazy_generate_modules for augmentation1, augmentation2, labels in loader: ValueError: not enough values to unpack (expected 3, got 2)

Maybe this implementation is not tested or build for full cifar10 support or I'm missing something. Hope you can help. Thanks.

jramapuram commented 4 years ago

@AlexanderBartler ,

Thanks for testing this. Currently it isn’t designed for anything besides a folder of images. I’ll make a note of this in the README.md. If you convert CIFAR to such a structure it should work.

The error you are seeing is because the model expects the dataloader to return 3 images, i.e: augmentation1, augmentation2 and labels and this is handled by the MultiAugmentImageFolder