Avoiding Implementation Pitfalls of "Matrix Capsules with EM Routing" by Hinton et al

Ashley Daniel Gritzman
7/1/2019
cs.LGcs.CVstat.ML

Official code: IBM/matrix-capsules-with-em-routing (86 stars, Apache-2.0, last commit 2025-09-17).

Abstract

The recent progress on capsule networks by Hinton et al. has generated considerable excitement in the machine learning community. The idea behind a capsule is inspired by a cortical minicolumn in the brain, whereby a vertically organised group of around 100 neurons receive common inputs, have common outputs, are interconnected, and may well constitute a fundamental computation unit of the cerebral cortex. However, Hinton's paper on "Matrix Capsule with EM Routing'" was unfortunately not accompanied by a release of source code, which left interested researchers attempting to implement the architecture and reproduce the benchmarks on their own. This has certainly slowed the progress of research building on this work. While writing our own implementation, we noticed several common mistakes in other open source implementations that we came across. In this paper we share some of these learnings, specifically focusing on three implementation pitfalls and how to avoid them: (1) parent capsules with only one child; (2) normalising the amount of data assigned to parent capsules; (3) parent capsules at different positions compete for child capsules. While our implementation is a considerable improvement over currently available implementations, it still falls slightly short of the performance reported by Hinton et al. (2018). The source code for this implementation is available on GitHub at the following URL: https://github.com/IBM/matrix-capsules-with-em-routing.

View on arXivView PDF

Code Implementations(1)

Apache-2.0

A TensorFlow implementation of "Matrix Capsules with EM Routing" by Hinton et al. (2018).

8627Shell, PythonMar 18, 20191 years agoApache-2.0
capsnetcapsule-networkscapsulesdynamic-routingem-routing+2 more

Cite this paper

@article{gritzman2019avoiding,
  title  = {Avoiding Implementation Pitfalls of "Matrix Capsules with EM Routing" by Hinton et al},
  author = {Ashley Daniel Gritzman},
  year   = {2019},
  eprint = {1907.00652},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1907.00652}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1907.00652.svg)](https://codeofpaper.com/paper/1907.00652)

Discussion