sthalles/SimCLR

PyTorch implementation of SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

Jupyter Notebook

2,495

143 commits

updated Mar 4, 2024

See the code

README

PyTorch SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

DOI

Blog post with full documentation: Exploring SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

Image of SimCLR Arch

See also PyTorch Implementation for BYOL - Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning.

Installation

$ conda env create --name simclr --file env.yml
$ conda activate simclr
$ python run.py

Config file

Before running SimCLR, make sure you choose the correct running configurations. You can change the running configurations by passing keyword arguments to the run.py file.


$ python run.py -data ./datasets --dataset-name stl10 --log-every-n-steps 100 --epochs 100 

If you want to run it on CPU (for debugging purposes) use the --disable-cuda option.

For 16-bit precision GPU training, there NO need to to install NVIDIA apex. Just use the --fp16_precision flag and this implementation will use Pytorch built in AMP training.

Feature Evaluation

Feature evaluation is done using a linear model protocol.

First, we learned features using SimCLR on the STL10 unsupervised set. Then, we train a linear classifier on top of the frozen features from SimCLR. The linear model is trained on features extracted from the STL10 train set and evaluated on the STL10 test set.

Check the Open In Colab notebook for reproducibility.

Note that SimCLR benefits from longer training.

Linear ClassificationDatasetFeature ExtractorArchitectureFeature dimensionalityProjection Head dimensionalityEpochsTop1 %
Logistic Regression (Adam)STL10SimCLRResNet-1851212810074.45
Logistic Regression (Adam)CIFAR10SimCLRResNet-1851212810069.82
Logistic Regression (Adam)STL10SimCLRResNet-5020481285070.075
contrastive-loss
deep-learning
machine-learning
pytorch
pytorch-implementation
representation-learning
simclr
torchvision
unsupervised-learning

sthalles/SimCLR

PyTorch implementation of SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

Jupyter Notebook

2,495

143 commits

updated Mar 4, 2024

See the code

README

PyTorch SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

DOI

Blog post with full documentation: Exploring SimCLR: A Simple Framework for Contrastive Learning of Visual Representations

Image of SimCLR Arch

See also PyTorch Implementation for BYOL - Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning.

Installation

$ conda env create --name simclr --file env.yml
$ conda activate simclr
$ python run.py

Config file

Before running SimCLR, make sure you choose the correct running configurations. You can change the running configurations by passing keyword arguments to the run.py file.


$ python run.py -data ./datasets --dataset-name stl10 --log-every-n-steps 100 --epochs 100 

If you want to run it on CPU (for debugging purposes) use the --disable-cuda option.

For 16-bit precision GPU training, there NO need to to install NVIDIA apex. Just use the --fp16_precision flag and this implementation will use Pytorch built in AMP training.

Feature Evaluation

Feature evaluation is done using a linear model protocol.

First, we learned features using SimCLR on the STL10 unsupervised set. Then, we train a linear classifier on top of the frozen features from SimCLR. The linear model is trained on features extracted from the STL10 train set and evaluated on the STL10 test set.

Check the Open In Colab notebook for reproducibility.

Note that SimCLR benefits from longer training.

Linear ClassificationDatasetFeature ExtractorArchitectureFeature dimensionalityProjection Head dimensionalityEpochsTop1 %
Logistic Regression (Adam)STL10SimCLRResNet-1851212810074.45
Logistic Regression (Adam)CIFAR10SimCLRResNet-1851212810069.82
Logistic Regression (Adam)STL10SimCLRResNet-5020481285070.075
contrastive-loss
deep-learning
machine-learning
pytorch
pytorch-implementation
representation-learning
simclr
torchvision
unsupervised-learning

Significant stargazers

Bo-Kyeong Kim

24 followers · starred Dec 2020

Kehan Lu

152 followers · starred Mar 2022

Ryuichi Yamamoto

1,739 followers · starred Jul 2021

Kiteretsu77

71 followers · starred Mar 2026