Skip to content

caharper/learnable_moments_pooling

Repository files navigation

Learnable Moments Pooling

Method Overview

This is the code for the paper Learnable Statistical Moments Pooling for Automatic Modulation Classification, accepted at ICASSP 2024. This work enables the statistical moment order (e.g., 1=mean, 2=variance, 3=skewness, 4=kurtosis) to be learned from data. This is typically a non-differentiable process. To overcome this limitation, we introduce a continuous relaxation of the moment order. This allows us to learn the moment order from data using gradient descent. We show that this approach outperforms fixed moment order pooling and other learnable moment order pooling methods.

Type Statistics Shared Weights Test Accuracy (%) Peak Accuracy (%) # Params (K)
Raw [μ] 62.93 97.45 200.72
[U] 63.15 97.82 200.721
[U] 62.94 97.65 200.828
Central [μ, σ²] 63.54 98.80 214.544
[U, Σ] 63.67 98.77 214.548
[U, Σ] 63.49 98.67 214.762
[U, σ²] 63.68 98.75 214.545
[U, σ²] 63.51 98.62 214.652
Std. [μ, σ², γ] 62.96 98.84 228.368
[μ, σ², γ, κ] 63.30 98.79 242.192
[U, Σ, Γ] 63.35 98.72 228.373
[U, Σ, Γ] 62.76 97.68 228.694
[U, σ², γ, κ] 63.00 98.65 242.193
[U, σ², γ, κ] 62.93 98.60 242.3

*Note: Capital letters denote learnable moments, while lowercase letters denote fixed moments.

Table of Contents

Installation

With Git

To install this code, run the following in your environment:

pip install git+https://github.com/caharper/learnable_moments_pooling

Manual

To install this code manually, clone this repo and run the following in your environment:

git clone https://github.com/caharper/learnable_moments_pooling
cd learnable_moments_pooling
python setup.py install

Run Experiments

We provide our experimental configuration for the RadioML 2018.01A dataset (download here) under the ./experiments directory. To process the data into TFRecord format for optimal performance, we make use of the smart-tfrecord-writer package. To convert the dataset into this format, follow the guide here.

Once the dataset is configured, we make use of the bocas package to run our experiments. To run the experiments, run the following in your environment:

cd experiments/modulation
python -m bocas.launch run.py --task run.py --config configs/sweep-learned.py

Make sure to pass the appropriate configuration file. Our configurations can be found under the ./experiments/modulation/configs/ directory.

Citation

If you find this code useful, please cite our paper:

@inproceedings{harper2024icassp,
  title={Learnable Statistical Moments Pooling for Automatic Modulation Classification},
  author={Harper, Clayton and Thornton, Mitchell A and Larson, Eric C},
  booktitle={ICASSP 2024-2024 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
  year={2024},
  organization={IEEE}
}

About

Gradient-based method to learn statistical moment orders in deep neural networks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages