Papers › Representation Learning for Clustering via Building Consensus

Representation Learning for Clustering via Building Consensus

4 May 2021arXiv:2105.01289archive 2025-07-28

Aniket Anand Deshmukh, Jayanth Reddy Regatti, Eren Manavoglu, Urun Dogan

In this paper, we focus on unsupervised representation learning for clustering of images. Recent advances in deep clustering and unsupervised representation learning are based on the idea that different views of an input image (generated through data augmentation techniques) must be close in the representation space (exemplar consistency), and/or similar images must have similar cluster assignments (population consistency). We define an additional notion of consistency, consensus consistency, which ensures that representations are learned to induce similar partitions for variations in the representation space, different clustering algorithms or different initializations of a single clustering algorithm. We define a clustering loss by executing variations in the representation space and seamlessly integrate all three consistencies (consensus, exemplar and population) into an end-to-end learning framework. The proposed algorithm, consensus clustering using unsupervised representation learning (ConCURL), improves upon the clustering performance of state-of-the-art methods on four out of five image datasets. Furthermore, we extend the evaluation procedure for clustering to reflect the challenges encountered in real-world clustering tasks, such as maintaining clustering performance in cases with distribution shifts. We also perform a detailed ablation study for a deeper understanding of the proposed algorithm. The code and the trained models are available at https://github.com/JayanthRR/ConCURL_NCE.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2105.01289")

Code

Syntology Ran 1 of 7 code samples harvested from 1 repository linked to this paper; 6 have no recorded run. Of those that ran: 1 ran · our draft was wrong.

By repository: official repository: 7 samples from 1 repository, 1 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

JayanthRR/ConCURL_NCE officialmentioned in papermentioned on GitHubpytorchMIT report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

7 samples harvested; 1 ran; 0 honoured the contract we drafted; 6 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · our draft was wrong
6unverified

Licence: 0 of the 7 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from JayanthRR/ConCURL_NCE. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

conv3x3 JayanthRR/ConCURL_NCE/model_utils/nce_resnet.py official repository ran · our draft was wrong MIT (permissive) · fac5364e2f53c6db · report
byol_loss_fn JayanthRR/ConCURL_NCE/losses.py official repository unverified MIT (permissive) · de5ec551fb74b9c5 · report
center_crop JayanthRR/ConCURL_NCE/lib/custom_transforms.py official repository unverified MIT (permissive) · 693513ff2d202308 · report
distributed_sinkhorn JayanthRR/ConCURL_NCE/losses.py official repository unverified MIT (permissive) · 2afdf62a2f77e421 · report
getQ JayanthRR/ConCURL_NCE/losses.py official repository unverified MIT (permissive) · 7d0517cb29119e33 · report
random_num_generator JayanthRR/ConCURL_NCE/lib/custom_transforms.py official repository unverified MIT (permissive) · abf95b2d2f20e322 · report
to_tensor JayanthRR/ConCURL_NCE/lib/custom_transforms.py official repository unverified MIT (permissive) · 382714b2c227ba48 · report

Tasks

ClusteringData AugmentationDeep ClusteringImage ClusteringRepresentation Learning

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Image Clustering CIFAR-10 ConCURL ARI 0.715 #22 of 40 Archive leaderboard report
Image Clustering CIFAR-10 ConCURL Accuracy 0.846 #22 of 40 Archive leaderboard report
Image Clustering CIFAR-10 ConCURL NMI 0.762 #22 of 40 Archive leaderboard report
Image Clustering CIFAR-10 ConCURL Train set Train #22 of 40 Archive leaderboard report
Image Clustering CIFAR-100 ConCURL ARI 0.303 #15 of 30 Archive leaderboard report
Image Clustering CIFAR-100 ConCURL Accuracy 0.479 #15 of 30 Archive leaderboard report
Image Clustering CIFAR-100 ConCURL NMI 0.468 #15 of 30 Archive leaderboard report
Image Clustering CIFAR-100 ConCURL Train Set Train #15 of 30 Archive leaderboard report
Image Clustering ImageNet-10 ConCURL ARI 0.909 #5 of 18 Archive leaderboard report
Image Clustering ImageNet-10 ConCURL Accuracy 0.958 #5 of 18 Archive leaderboard report
Image Clustering ImageNet-10 ConCURL NMI 0.907 #5 of 18 Archive leaderboard report
Image Clustering Imagenet-dog-15 ConCURL ARI 0.531 #7 of 20 Archive leaderboard report
Image Clustering Imagenet-dog-15 ConCURL Accuracy 0.695 #7 of 20 Archive leaderboard report
Image Clustering Imagenet-dog-15 ConCURL NMI 0.63 #7 of 20 Archive leaderboard report
Image Clustering STL-10 ConCURL Accuracy 0.749 #19 of 29 Archive leaderboard report
Image Clustering STL-10 ConCURL NMI 0.636 #19 of 29 Archive leaderboard report
Image Clustering STL-10 ConCURL Train Split Train+Test #19 of 29 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections