Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Powerset Convolutional Neural Networks


We present a novel class of convolutional neural networks (CNNs) for set functions, i.e., data indexed with the powerset of a finite set. The convolutions are derived as linear, shift-equivariant functions for various notions of shifts on set functions. The framework is fundamentally different from graph convolutions based on the Laplacian, as it provides not one but several basic shifts, one for each element in the ground set. Prototypical experiments with several set function classification tasks on synthetic datasets and on datasets derived from real-world hypergraphs demonstrate the potential of our new powerset CNNs.


  title={Powerset convolutional neural networks},
  author={Wendler, Chris and Alistarh, Dan and P{\"u}schel, Markus},
  booktitle={Advances in Neural Information Processing Systems},


The project structure was provided by Max Horn.


We separate general code (in the src module) from code used to run experiments (in the exp module). General code represents the definition of models and neural network architectures. Experiments are sacred scripts with configuration parameters, which then call parts of the general code.


The dependecies of the project can be installed using pipenv. To install all dependecies required for the project run pipenv install in the root project folder (containing the file Pipfile).

It is then possible to run commands in the project specific virtual environment using pipenv shell.

Finally, as pipenv does not support multiple dedicated package configurations, it is possible to change the default tensorflow packages with the correposnding gpu versions (for example when it is defied to run code on a gpu server).

This can be done using the command pipenv run install-gpu-packages.


The experiments for which the results are reported in the paper can be run using the command and exchanging model and hyperparameters appropriately:

python -m exp.train_model with model.PCN dataset.AJ

To train and test the 2-layer powerset convolutional neural network with shift and

python -m exp.train_model with model.PCN model.signal_model=4 dataset.AJ

to train the 2-layer powerset convolutional neural network with shift .

Remaining model names: model.KIPF (Laplacian based graph convolution on the hypercube), model.ADJ adjacency based graph convolution on the hypercube), model.MLP (mutli-layer perceptron).

Hyperparameters: model.pooling=pm (for pooling) model.use_sum=True (for the average aggregation step before the MLP)

Datasets: dataset.AH (Spectral Patterns), dataset.AJ (k-Junta), dataset.AXM (coverage vs. 'almost coverage'), dataset.DOM4 (four class domain classification), dataset.DOM6 (six class domain classification), dataset.CON10 (congress-bills open vs. closed hyperedge), dataset.COAUTH10 (coauthorship closed hyperedge vs. not-closed hyperedge)

In order to store the output of a training run alongside with its configuration, we can call the sacred script using the -F flag which writes all of the runs output into the folder defined by -F:

python -m exp.train_model with model.PCN dataset.AJ -F target_dir


Sample implementation accompanying the NeurIPS 2019 paper 'Powerset Convolutional Neural Networks' by Chris Wendler, Dan Alistarh, and Markus Püschel




No releases published


No packages published