torchsom: The Reference PyTorch Library for Self-Organizing Maps
Louis Berthier, Ahmed Shokry, Maxime Moreaud, Guillaume Ramelet, Eric Moulines
TL;DR
torchsom delivers a GPU-accelerated, PyTorch-based SOM with a scikit-learn–style API and a rich visualization toolkit, addressing gaps in existing Python implementations. The paper details a modular architecture (core SOM engine, utilities, and visualization) and a comprehensive suite of learning, distance, neighborhood, and scheduling options, including multiple decays to ensure convergence. Empirical results show torchsom maintains fidelity comparable to MiniSom while achieving large speedups (77%–99% faster), with GPU execution providing the greatest gains, and improved topological preservation. The work additionally integrates clustering (K-means, GMM, HDBSCAN) and extensive visualization (U-matrix, component planes, reliability scores, clustering diagnostics) to support interpretable, production-ready unsupervised analysis. Overall, torchsom enables scalable, reproducible SOM workflows within PyTorch environments, bridging research and industrial use cases.
Abstract
This paper introduces torchsom, an open-source Python library that provides a reference implementation of the Self-Organizing Map (SOM) in PyTorch. This package offers three main features: (i) dimensionality reduction, (ii) clustering, and (iii) friendly data visualization. It relies on a PyTorch backend, enabling (i) fast and efficient training of SOMs through GPU acceleration, and (ii) easy and scalable integrations with PyTorch ecosystem. Moreover, torchsom follows the scikit-learn API for ease of use and extensibility. The library is released under the Apache 2.0 license with 90% test coverage, and its source code and documentation are available at https://github.com/michelin/TorchSOM.
