Deep Learning Demos for 5G/6G Using TensorFlow and Sionna
Project description
[Work-In-Progress] nextgen-wireless-dl-demos
Deep learning demos for 5G/6G wireless systems using TensorFlow and Sionna.
Disclaimer: This is an independent project and is not affiliated with, endorsed by, or sponsored by NVIDIA Corporation. Sionna is an open-source library developed by NVIDIA.
⚠️ Note: This project is under active development and not accepting external contributions at this time.
Author and Maintainer
Srikanth Pagadarai srikanth.pagadarai@gmail.com
Overview
This repository contains neural network-based demos for 5G/6G communication systems:
| Demo | Description |
|---|---|
| Digital Pre-Distortion | Digital Pre-Distortion for power amplifier linearization |
| MIMO-OFDM Neural Receiver | Neural receiver for MIMO-OFDM systems with learned channel estimation and equalization |
| Site-Specific PUSCH Autoencoder | End-to-end autoencoder for 5G NR PUSCH with trainable constellation and neural detector |
See the documentation page here: https://srikanthpagadarai.github.io/nextgen-wireless-dl-demos/
Project Structure
nextgen-wireless-dl-demos/
├── .github/
│ └── workflows/
│ ├── docs.yml # Documentation build workflow
│ ├── publish.yml # PyPI publish workflow
│ ├── test-publish.yml # Test PyPI publish workflow
│ └── test.yml # CI test workflow
├── .dockerignore # Docker build exclusions
├── .flake8 # Flake8 linter configuration
├── .gitignore # Git ignore rules
├── .gitmodules # Git submodule definitions
├── .pre-commit-config.yaml # Pre-commit hooks configuration
├── CITATION.cff # Citation
├── demos/ # All demos source code
│ ├── dpd/ # Digital Pre-Distortion demo
│ │ ├── results/ # Performance results
│ │ ├── src/ # DPD demo source code
│ │ │ ├── config.py # System configuration
│ │ │ ├── tx.py # OFDM transmitter
│ │ │ ├── rx.py # OFDM receiver
│ │ │ ├── power_amplifier.py # PA model with memory effects
│ │ │ ├── interpolator.py # Sample rate conversion
│ │ │ ├── ls_dpd.py # Least-squares DPD
│ │ │ ├── ls_dpd_system.py # LS-DPD end-to-end system
│ │ │ ├── nn_dpd.py # Neural network DPD
│ │ │ ├── nn_dpd_system.py # NN-DPD end-to-end system
│ │ │ └── system.py # Base system class
│ │ ├── tests/ # Unit tests
│ │ ├── training_ls.py # LS-DPD training
│ │ ├── training_nn.py # NN-DPD training
│ │ ├── inference.py # Model evaluation
│ │ ├── plots_ls.py # LS-DPD visualization
│ │ └── plots_nn.py # NN-DPD visualization
│ ├── mimo_ofdm_neural_receiver/ # Neural MIMO-OFDM receiver demo
│ │ ├── results/ # Performance results
│ │ ├── src/ # Neural MIMO-OFDM receiver demo source code
│ │ │ ├── config.py # System configuration
│ │ │ ├── tx.py # Transmitter chain
│ │ │ ├── rx.py # Baseline receiver
│ │ │ ├── channel.py # CDL channel model
│ │ │ ├── csi.py # Channel state information
│ │ │ ├── neural_rx.py # Neural receiver network
│ │ │ └── system.py # End-to-end system
│ │ ├── tests/ # Unit tests
│ │ ├── training.py # Neural receiver training
│ │ ├── inference.py # Trained model evaluation
│ │ ├── baseline.py # Baseline receiver evaluation
│ │ └── plots.py # BER/BLER visualization
│ └── pusch_autoencoder/ # PUSCH autoencoder demo
│ ├── results/ # Performance results
│ ├── src/ # PUSCH autoencoder demo source code
│ │ ├── config.py # System configuration
│ │ ├── pusch_trainable_transmitter.py # Trainable constellation TX
│ │ ├── pusch_trainable_receiver.py # Neural receiver
│ │ ├── pusch_neural_detector.py # Conv2D-based detector
│ │ ├── cir_generator.py # Channel impulse response generator
│ │ ├── cir_manager.py # CIR dataset management
│ │ └── system.py # End-to-end PUSCH link
│ ├── tests/ # Unit tests
│ ├── training.py # Autoencoder training
│ ├── inference.py # Trained model evaluation
│ ├── baseline.py # LMMSE baseline evaluation
│ └── plots.py # BLER and constellation plots
├── docker/ # Docker configuration
│ ├── docker-instructions.md # Docker usage guide
│ └── entrypoint.sh # Container entrypoint
├── Dockerfile # Docker image definition
├── docs/ # Sphinx documentation
│ ├── api/ # API reference pages
│ │ ├── dpd.rst # API reference page for DPD demo
│ │ ├── index.rst # index page
│ │ ├── mimo_ofdm_neural_receiver.rst # API reference page for Neural MIMO-OFDM receiver demo
│ │ └── pusch_autoencoder.rst # API reference page for PUSCH autoencoder demo
│ ├── changelog.rst # change log
│ ├── conf.py # Sphinx configuration
│ ├── demos/ # Documentation pages for demos
│ │ ├── dpd.rst/ # Documentation page for DPD demo
│ │ ├── mimo_ofdm_neural_receiver.rst/ # Documentation page for Neural MIMO-OFDM receiver demo
│ │ └── pusch_autoencoder.rst/ # Documentation page for PUSCH autoencoder demo
│ ├── index.rst # main index page
│ ├── installation.rst # installation instructions page
│ ├── make.bat # make file to build doc
│ ├── Makefile # make file to build doc
│ ├── requirements.txt # doc requirements
│ ├── _static/ # contains custom CSS, JS files
│ └── _templates/ # empty
├── gcp-management/ # GCP infrastructure (git submodule)
│ ├── gcloud-reset.sh # reset gcloud
│ ├── gcloud-setup.sh # setup gcloud
│ └── README.md # gcloud account login/setup/reset instructions
├── host_nvidia_runtime_setup.sh # NVIDIA runtime setup script
├── LICENSE # MIT license
├── poetry.lock # Dependency lock file
├── pyproject.toml # Project configuration
└── README.md # This file
Installation
Requires Python 3.10–3.12.
pip install nextgen-wireless-dl-demos
Or install from source:
git clone https://github.com/SrikanthPagadarai/nextgen-wireless-dl-demos.git
cd nextgen-wireless-dl-demos
pip install .
Requirements
- Python 3.10–3.12
- TensorFlow 2.x
- Sionna ≥0.19.0
- CUDA (optional, for GPU acceleration)
License
MIT
Docker Setup
See docker/docker-instructions.md
Quick Start
DPD Demo
See demos/dpd/README.md
MIMO OFDM Neural Receiver Demo
See demos/mimo_ofdm_neural_receiver/README.md
PUSCH Autoencoder Demo
See demos/pusch_autoencoder/README.md
References
- Sionna: An Open-Source Library for Next-Generation Physical Layer Research
- 3GPP TS 38.211: NR Physical channels and modulation
- 3GPP TS 38.212: NR Multiplexing and channel coding
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nextgen_wireless_dl_demos-0.1.2.tar.gz.
File metadata
- Download URL: nextgen_wireless_dl_demos-0.1.2.tar.gz
- Upload date:
- Size: 36.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62b97909ddc20de82e1edfa1f00d6d0c67bfb52498fb6f02100414779d31e18b
|
|
| MD5 |
89012550b07adb8696c910dd1b1facb9
|
|
| BLAKE2b-256 |
99224467d4a18b16f87e9c986f7b29ecb72a984f4674c5ecc91118727b9e19a5
|
File details
Details for the file nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl.
File metadata
- Download URL: nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl
- Upload date:
- Size: 36.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
741e3be399521f0c1837d67742db04d9c960ee0a33699a4c9b4f6d61221cc0e5
|
|
| MD5 |
f1f06733826a1e7ee7e37de228d8e6ef
|
|
| BLAKE2b-256 |
f3ec7a4328d44351950ea2787a970e81e9e0f7220b815d155dceab9d527229a4
|