Comments (6)
Hi! Thanks for the interest in our work.
An easy solution is to checkout the commit before the addition of UNOv2, run one of the commands in the readme and print the args and the transforms. Then you can reuse those hyperparam for UNOv2, if that is what you would like to do.
However, an even easier solution would be to just mention boh UNO v1 and v2. For UNOv1 you can use the result in the paper and compare to RS. For UNOv2 you can use the results on the readme and compare with RS+ (uses 400 epochs). The batch size does not impact UNO too much so I would not worry about that. The best thing in my opinion is laying down the results in your paper and let the reviewer decide.
Regarding augmentations, multicrop does not use that much more compute because crops are resized to a lower resolution. Moreover it is reasonable that different methods work better with different augmentations. For instance, I found UNO to be extremely robust and tolerant to different augmentations, while RS decreases performance with stronger augmentations. I think it is fair to compare with the best set of augmentations for each method. This is what people have been doing in the SSL literature: SimCLR, BYOL, SwAV and DINO all have different augmentations that fit the method.
I hope that helps.
from uno.
Thank you for your reply! It helps!
And I did have some observations by running your code.
The setting of the four groups listed in the following are (from top to bottom):
group index of wandb "Name" | different settings | task agnostic/test/acc |
---|---|---|
1-CIFAR100-UNO-discover-resnet18-80_20_bs256_smallcrop | batch_size=256, num_small_crops=2 |
0.6661$\pm$0.03 |
2-CIFAR100-UNO-discover-resnet18-80_20_bs256_woSmallcrop | batch_size=256, num_small_crops=0 |
0.7321$\pm$0.02 |
3-CIFAR100-UNO-discover-resnet18-80_20_bs512_woSmallcrop | batch_size=512, num_small_crops=0 |
0.7648$\pm$0.009 |
4-CIFAR100-discover-resnet18-80_20 | batch_size=512, num_small_crops=2 |
0.7803$\pm$0.006 |
Other arguments are kept as same (e.g., max_epoch=500
, base_lr=0.4
(maybe should be set smaller for smaller batch size), num_large_crops=2
)
We can observe that smaller batch size will lead to worse performance (and larger perturbations)...
from uno.
Of course when you modify the batch size you need to retune the hyperparams, at least the learning rate! It is not normal that your accuracy on the unlab set is going down.
from uno.
Thank you. I will do more experiments.
And I just wonder why you adjusted the learning rate from 0.1 to 0.4 in UNO v2. Will it bring benefits? Or is that just because longer training epochs can bear a larger learning rate as we have longer steps under small learning rates during the process of annealing?
from uno.
I think I tuned it but I don't remember exactly. Also remember that for very small batch sizes you might need a queue (take a look at SwAV's code)
from uno.
Thank you very much for your detailed replies! I don't have further questions so far.
Have a nice day!
from uno.
Related Issues (14)
- License HOT 2
- How long does ImageNet experiments take? HOT 2
- How to implement the unconcat version? HOT 7
- Clarification question on num_large_crops HOT 2
- UNO_V2 results HOT 1
- The results on CIFAR10 HOT 2
- Issues with saving and loading checkpoints when using multiple gpus.
- Reproducing the paper results HOT 7
- Save inference images HOT 2
- swapped_prediction computation HOT 9
- Apply to a custom dataset HOT 2
- A question about the Eq.4 HOT 2
- loss_per_head seems wrong HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uno.