{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/multi-facet-clustering-variational","title":"Multi-Facet Clustering Variational Autoencoders","arxiv_id":"2106.05241","date":"2021-06-09","proceeding":"NeurIPS 2021 12","authors":["Fabian Falck","Haoting Zhang","Matthew Willetts","George Nicholson","Christopher Yau","Chris Holmes"],"abstract":"Work in deep clustering focuses on finding a single partition of data. However, high-dimensional data, such as images, typically feature multiple interesting characteristics one could cluster over. For example, images of objects against a background could be clustered over the shape of the object and separately by the colour of the background. In this paper, we introduce Multi-Facet Clustering Variational Autoencoders (MFCVAE), a novel class of variational autoencoders with a hierarchy of latent variables, each with a Mixture-of-Gaussians prior, that learns multiple clusterings simultaneously, and is trained fully unsupervised and end-to-end. MFCVAE uses a progressively-trained ladder architecture which leads to highly stable performance. We provide novel theoretical results for optimising the ELBO analytically with respect to the categorical variational posterior distribution, correcting earlier influential theoretical work. On image benchmarks, we demonstrate that our approach separates out and clusters over different aspects of the data in a disentangled manner. We also show other advantages of our model: the compositionality of its latent space and that it provides controlled generation of samples.","url_abs":"https://arxiv.org/abs/2106.05241v2","url_pdf":"https://arxiv.org/pdf/2106.05241v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"multi-facet-clustering-variational","repo_url":"https://github.com/FabianFalck/mfcvae","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"deep-clustering","task_name":"Deep Clustering"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2106.05241","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.05241"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/FabianFalck/mfcvae","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/eelxpeng/UnsupervisedDeepLearning-Pytorch","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/ermongroup/Variational-Ladder-Autoencoder","reach":{"status":"ok"}},{"provenance":"deterministic:regex_extraction","url":"https://github.com/Zhiyuan1991/proVLAE","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/addtt/boiler-pytorch","reach":null}],"summary":{"ran":8,"ran_draft_wrong":5,"ran_violates":1,"unverified":11},"by_repo_kind":{"official":{"samples":12,"ran":7,"repositories":1},"found_in_text":{"samples":12,"ran":7,"repositories":3}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"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"},"n_pointer_only_for_licence":4,"samples":[{"code_sha256_prefix":"3c2568c9b4080187","entry":"FCSharedDecoder","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3c2568c9b4080187"}},{"code_sha256_prefix":"d8c0031da2c81f1e","entry":"FCseparateEncoders","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d8c0031da2c81f1e"}},{"code_sha256_prefix":"6a768b080b45bdca","entry":"FCsharedEncoder","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6a768b080b45bdca"}},{"code_sha256_prefix":"26f5b491fc1c025d","entry":"MnistVAE","repo":"addtt/boiler-pytorch","repo_kind":"found_in_text","path":"models/mnist_vae.py","file_url":"https://github.com/addtt/boiler-pytorch/blob/HEAD/models/mnist_vae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"26f5b491fc1c025d"}},{"code_sha256_prefix":"211690ea3f81115d","entry":"Normal","repo":"Zhiyuan1991/proVLAE","repo_kind":"found_in_text","path":"model_ladder_pro_celbA.py","file_url":"https://github.com/Zhiyuan1991/proVLAE/blob/HEAD/model_ladder_pro_celbA.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"211690ea3f81115d"}},{"code_sha256_prefix":"12e98decb92b6980","entry":"ResidualConvBlock","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"12e98decb92b6980"}},{"code_sha256_prefix":"fbb874d411d9eea7","entry":"adjust_learning_rate","repo":"eelxpeng/UnsupervisedDeepLearning-Pytorch","repo_kind":"found_in_text","path":"udlp/clustering/vade.py","file_url":"https://github.com/eelxpeng/UnsupervisedDeepLearning-Pytorch/blob/HEAD/udlp/clustering/vade.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fbb874d411d9eea7"}},{"code_sha256_prefix":"f0527d9b7e69a1b1","entry":"buildNetwork","repo":"eelxpeng/UnsupervisedDeepLearning-Pytorch","repo_kind":"found_in_text","path":"udlp/clustering/vade.py","file_url":"https://github.com/eelxpeng/UnsupervisedDeepLearning-Pytorch/blob/HEAD/udlp/clustering/vade.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f0527d9b7e69a1b1"}},{"code_sha256_prefix":"9b58e319e01d091f","entry":"build_cnn_network","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9b58e319e01d091f"}},{"code_sha256_prefix":"53afb335f775301f","entry":"build_fc_network","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"53afb335f775301f"}},{"code_sha256_prefix":"41380e1185791a99","entry":"get_module_device","repo":"addtt/boiler-pytorch","repo_kind":"found_in_text","path":"models/mnist_vae.py","file_url":"https://github.com/addtt/boiler-pytorch/blob/HEAD/models/mnist_vae.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"41380e1185791a99"}},{"code_sha256_prefix":"d2619b31897cb53e","entry":"log_likelihood_samplesImean_sigma","repo":"eelxpeng/UnsupervisedDeepLearning-Pytorch","repo_kind":"found_in_text","path":"udlp/clustering/vade.py","file_url":"https://github.com/eelxpeng/UnsupervisedDeepLearning-Pytorch/blob/HEAD/udlp/clustering/vade.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d2619b31897cb53e"}},{"code_sha256_prefix":"7a946359766e7688","entry":"log_likelihood_samples_unit_gaussian","repo":"eelxpeng/UnsupervisedDeepLearning-Pytorch","repo_kind":"found_in_text","path":"udlp/clustering/vade.py","file_url":"https://github.com/eelxpeng/UnsupervisedDeepLearning-Pytorch/blob/HEAD/udlp/clustering/vade.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7a946359766e7688"}},{"code_sha256_prefix":"8882946f83006f1b","entry":"softplus_inverse_numpy","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8882946f83006f1b"}},{"code_sha256_prefix":"52f7b3f9c293acc1","entry":"BaseGenerativeModel","repo":"addtt/boiler-pytorch","repo_kind":"found_in_text","path":"models/mnist_vae.py","file_url":"https://github.com/addtt/boiler-pytorch/blob/HEAD/models/mnist_vae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"52f7b3f9c293acc1"}},{"code_sha256_prefix":"bb6c3a3a8b164360","entry":"BaseModel","repo":"addtt/boiler-pytorch","repo_kind":"found_in_text","path":"models/mnist_vae.py","file_url":"https://github.com/addtt/boiler-pytorch/blob/HEAD/models/mnist_vae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bb6c3a3a8b164360"}},{"code_sha256_prefix":"17b77e2df6e4b53f","entry":"Bernoulli","repo":"Zhiyuan1991/proVLAE","repo_kind":"found_in_text","path":"model_ladder_pro_celbA.py","file_url":"https://github.com/Zhiyuan1991/proVLAE/blob/HEAD/model_ladder_pro_celbA.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"17b77e2df6e4b53f"}},{"code_sha256_prefix":"531a8ab1dbcdf6cd","entry":"CONVvlaeDecoderCelebA","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"531a8ab1dbcdf6cd"}},{"code_sha256_prefix":"16a945d4f4868865","entry":"CONVvlaeEncoderCelebA","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"16a945d4f4868865"}},{"code_sha256_prefix":"66f5f1c1582b0467","entry":"FCvlaeDecoder","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"66f5f1c1582b0467"}},{"code_sha256_prefix":"83df06166b5ae307","entry":"FCvlaeEncoder","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"83df06166b5ae307"}},{"code_sha256_prefix":"defcc3d876b77dae","entry":"MFCVAE","repo":"FabianFalck/mfcvae","repo_kind":"official","path":"mfcvae.py","file_url":"https://github.com/FabianFalck/mfcvae/blob/HEAD/mfcvae.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"defcc3d876b77dae"}},{"code_sha256_prefix":"8f2b6bf45d13ab4b","entry":"VAE_ladder","repo":"Zhiyuan1991/proVLAE","repo_kind":"found_in_text","path":"model_ladder_pro_celbA.py","file_url":"https://github.com/Zhiyuan1991/proVLAE/blob/HEAD/model_ladder_pro_celbA.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8f2b6bf45d13ab4b"}},{"code_sha256_prefix":"6c018f96de64c8af","entry":"VaDE","repo":"eelxpeng/UnsupervisedDeepLearning-Pytorch","repo_kind":"found_in_text","path":"udlp/clustering/vade.py","file_url":"https://github.com/eelxpeng/UnsupervisedDeepLearning-Pytorch/blob/HEAD/udlp/clustering/vade.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6c018f96de64c8af"}},{"code_sha256_prefix":"4c9bb7ea70e75b6f","entry":"cluster_acc","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"4c9bb7ea70e75b6f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}