Papers › Stacked Capsule Autoencoders

Stacked Capsule Autoencoders

17 Jun 2019NeurIPS 2019 12arXiv:1906.06818archive 2025-07-28

Adam R. Kosiorek, Sara Sabour, Yee Whye Teh, Geoffrey E. Hinton

Objects are composed of a set of geometrically organized parts. We introduce an unsupervised capsule autoencoder (SCAE), which explicitly uses geometric relationships between parts to reason about objects. Since these relationships do not depend on the viewpoint, our model is robust to viewpoint changes. SCAE consists of two stages. In the first stage, the model predicts presences and poses of part templates directly from the image and tries to reconstruct the image by appropriately arranging the templates. In the second stage, SCAE predicts parameters of a few object capsules, which are then used to reconstruct part poses. Inference in this model is amortized and performed by off-the-shelf neural encoders, unlike in previous capsule networks. We find that object capsule presences are highly informative of the object class, which leads to state-of-the-art results for unsupervised classification on SVHN (55%) and MNIST (98.7%). The code is available at https://github.com/google-research/google-research/tree/master/stacked_capsule_autoencoders

PaperPDFConference PDFCodeCode 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="1906.06818")

Code

Syntology Ran 2 of 29 code samples harvested from 4 repositories linked to this paper; 27 have no recorded run. Of those that ran: 1 ran · violated contract; 1 ran · our draft was wrong.

By repository: official repository: 7 samples from 1 repository, 0 ran; community (archive-listed): 22 samples from 3 repositories, 2 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

google-research/google-research officialmentioned in papertf report
akosiorek/stacked_capsule_autoencoders officialmentioned on GitHubtfApache-2.0 report
KohavTal/SCAE_Project mentioned on GitHubpytorchApache-2.0 report
YuZiHanorz/stacked_capsule_autoencoders mentioned on GitHubtfApache-2.0 report
ara-25/MSDS19002_Project_DLSpring2020 mentioned on GitHubpytorch report
bdsaglam/torch-scae mentioned on GitHubpytorchApache-2.0 report
benenzhu/version0.3-scae mentioned on GitHubpytorch report
cxiang26/stacked_capsule_autoencode_pl mentioned on GitHubpytorch report
phanideepgampa/stacked-capsule-networks mentioned on GitHubpytorch 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

29 samples harvested; 2 ran; 0 honoured the contract we drafted; 27 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 · violated contract
1ran · our draft was wrong
27unverified

Licence: 0 of the 29 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 4 repositories linked to this paper, official or community; each sample names its own and says which. “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.

gaussian_blobs akosiorek/stacked_capsule_autoencoders/capsules/plot.py official repository unverified Apache-2.0 (permissive) · c94d19b7ab25522a · report
gaussian_blobs_const_scale akosiorek/stacked_capsule_autoencoders/capsules/plot.py official repository unverified Apache-2.0 (permissive) · 8e494526a6edfb93 · report
hex_to_rgb akosiorek/stacked_capsule_autoencoders/capsules/plot.py official repository unverified Apache-2.0 (permissive) · 4c1d49543510213d · report
memoize_arg_transform akosiorek/stacked_capsule_autoencoders/capsules/models/model.py official repository unverified Apache-2.0 (permissive) · 8c55f32be627e0ca · report
relu1 akosiorek/stacked_capsule_autoencoders/capsules/math_ops.py official repository unverified Apache-2.0 (permissive) · 7ac5d15a4e829dd7 · report
safe_ce akosiorek/stacked_capsule_autoencoders/capsules/math_ops.py official repository unverified Apache-2.0 (permissive) · 094969771f521bf6 · report
safe_log akosiorek/stacked_capsule_autoencoders/capsules/math_ops.py official repository unverified Apache-2.0 (permissive) · d06435ecd510267e · report
combined_shape KohavTal/SCAE_Project/torch_scae/general_utils.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 57542f87e248db45 · report
prod KohavTal/SCAE_Project/torch_scae/general_utils.py community (archive-listed) ran · violated contract fingerprinted Apache-2.0 (permissive) · 6d5acfb0087d1ee7 · report
BatchMLP bdsaglam/torch-scae/torch_scae/nn_ext.py community (archive-listed) unverified Apache-2.0 (permissive) · d6debf9640bd00f2 · report
BestStack KohavTal/SCAE_Project/torch_scae/nn_ext.py community (archive-listed) unverified Apache-2.0 (permissive) · 3a64054158d703c5 · report
Conv2dStack KohavTal/SCAE_Project/torch_scae/nn_ext.py community (archive-listed) unverified Apache-2.0 (permissive) · 1f7981add3e51350 · report
MLP KohavTal/SCAE_Project/torch_scae/nn_ext.py community (archive-listed) unverified Apache-2.0 (permissive) · 018f862a3ae6ed96 · report
affine_grid bdsaglam/torch-scae/torch_scae/part_decoder.py community (archive-listed) unverified Apache-2.0 (permissive) · 7972654ad56da3c4 · report
capsule_l2_loss KohavTal/SCAE_Project/torch_scae/object_decoder.py community (archive-listed) unverified Apache-2.0 (permissive) · dbc3e25948c02028 · report
conv_output_shape KohavTal/SCAE_Project/torch_scae/nn_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 46a280d5631eb673 · report
conv_output_size KohavTal/SCAE_Project/torch_scae/nn_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 6c8cdd002826e750 · report
cross_entropy_safe KohavTal/SCAE_Project/torch_scae/math_ops.py community (archive-listed) unverified Apache-2.0 (permissive) · f65130ec27f57098 · report
geometric_transform KohavTal/SCAE_Project/torch_scae/cv_ops.py community (archive-listed) unverified Apache-2.0 (permissive) · eaacf4c75671e1c5 · report
geometric_transform bdsaglam/torch-scae/torch_scae/cv_ops.py community (archive-listed) unverified Apache-2.0 (permissive) · aee48248137bef44 · report
get_latest_file_iteration KohavTal/SCAE_Project/torch_scae/general_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 7b5f49577ae87818 · report
invert_affine bdsaglam/torch-scae/torch_scae/part_decoder.py community (archive-listed) unverified Apache-2.0 (permissive) · 00f1c79b7fde1b74 · report
load_data_from_mat YuZiHanorz/stacked_capsule_autoencoders/load_affnist.py community (archive-listed) unverified Apache-2.0 (permissive) · dba87d282c88c543 · report
log_safe KohavTal/SCAE_Project/torch_scae/math_ops.py community (archive-listed) unverified Apache-2.0 (permissive) · dcc02359a095982c · report
measure_shape KohavTal/SCAE_Project/torch_scae/nn_utils.py community (archive-listed) unverified Apache-2.0 (permissive) · 835457d36160df6b · report
normalize KohavTal/SCAE_Project/torch_scae/math_ops.py community (archive-listed) unverified Apache-2.0 (permissive) · 557120b6207db13a · report
prepare_model_params KohavTal/SCAE_Project/torch_scae/factory.py community (archive-listed) unverified Apache-2.0 (permissive) · 114ca279f4f910b1 · report
qkv_attention KohavTal/SCAE_Project/torch_scae/set_transformer.py community (archive-listed) unverified Apache-2.0 (permissive) · 11fd17f376687a4c · report
toNum YuZiHanorz/stacked_capsule_autoencoders/handle_csv.py community (archive-listed) unverified Apache-2.0 (permissive) · a0c52efb1af7f6d5 · report

Tasks

Cross-Modal RetrievalObjectUnsupervised MNIST

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

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